簡體   English   中英

如何在方向改變后將碎片重新加載到后台堆疊中

[英]How to reload fragments into the backstack after orientation change

我的Android應用程序具有一個Activity的注冊流設置,我將這些步驟作為片段加載到活動布局中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    tools:context="com.example.android.ui.RegisterActivity">

    <LinearLayout
        android:id="@+id/register_container"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"></LinearLayout>

</RelativeLayout>

現在每個片段類實現在RegisterActivity中實現的公共接口,以便我知道加載下一步片段並將新片段添加到backstack

mFragmentTransaction.addToBackStack(mStepOne.TAG);

現在一切正常,通過4個步驟,我可以導航回步驟,同時保留每個片段中的輸入數據,如果它保持在相同的方向(portait)

但是一旦我改變方向,片段視圖就會消失

如果我達到第3步,我仍然可以點擊后退按鈕,它會返回顯示通過查看后端改變的監聽器而在那里顯示的片段

mFragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            if(mFragmentManager.getBackStackEntryCount() > 0) {
                Log.d("BACK STACK", "TAG (name): " + mFragmentManager.getBackStackEntryAt( (mFragmentManager.getBackStackEntryCount() - 1)).getName());
            }
        }
    });

保留片段的計數和標簽,但不保留視圖。 RegisterActivity onCreateView將術語片段加載到視圖中,當瀏覽步驟時,它仍然在視圖中。

mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mTerms = new RegisterFragmentTerms();
mFragmentTransaction.add(R.id.register_container, mTerms);
mFragmentTransaction.commit();

在我看來,視圖被加載到RegisterActivity之上,並在方向更改時被清除。 有可能解決我正在嘗試做的事情嗎? 或者我實施錯了嗎? 這是我的第一個Android應用程序:)

干杯

這似乎是由Activity娛樂引起的。 您是否曾在AndroidManifest.xml中將android:configChanges="orientation|keyboardHidden|screenSize"到您的Activity中? ,如果您將該標志添加到您的活動中,當方向更改並且片段堆棧不會消失時,它將不會被銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM