我的
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应用程序:)
干杯