我有一个Main活动(我称之为Activity A),它创建并附加一个像这样的片段A:
public onCreate(...){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_space);
FragmentManager fragmentMgr = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentMgr.beginTransaction();
fragmentTransaction = fagmentTransaction.add(R.id.container_fragments, FragmentA.newInstance()).addToBackStack(null);
fragmentTransaction.commit();
}
单击片段A中的按钮将导致片段A要求活动A启动活动B,如下所示:
Intent intentActivityB = new Intent(ActivityA.this, ActivityB.class);
startActivity(intentActivityB);
然后活动B启动并创建一个像这样的FragmentB:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_space);
FragmentManager fragmentMgr = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentMgr.beginTransaction();
fragmentTransaction = fragmentTransaction.replace(R.id.container_fragments, FragmentB.newInstance(isUpdate, position));
fragmentTransaction.addToBackStack(null).commit();
}
问题:
当我按下FragmentB中的UP按钮时,系统显示FragmentA,就像我预期的那样。问题是FragmentA的状态丢失了。在输入一些调试声明后,我观察到了这一点 当我按下FragmentB中的UP按钮时,ActivityA是从onCreate()创建的,具有null Bundle,这意味着FragmentA也在onCreate()上使用null Bundle调用。这解释了为什么我的州没有恢复。
为何ActivityA在启动ActivityB时被销毁?
如何恢复FragmentA的状态?
ActivityA和ActivityB是否使用相同的Back Stack或每个Activity有不同的Back Stack?
感谢您的阅读。