调用另一个内部Activity后销毁活动

时间:2016-11-14 17:20:56

标签: android android-activity fragment

我有一个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?

感谢您的阅读。

0 个答案:

没有答案