重新打开应用程序时如何恢复最近的片段

时间:2017-06-12 12:01:16

标签: android android-fragments android-activity android-lifecycle android-background

我正在开发android应用程序,假设我在我的应用程序中有以下活动:act1,act2和act3。

上面的每个活动都有一个片段,所以act1 - > frag1,act2 - > frag2等等。

当我的应用程序运行时,我打开了frag1然后按下了手机上的主页按钮。我将被引导到我的手机主页。

如果我按下启动的图标或再次按下后退按钮,应用程序将恢复/打开act1而不是frag1。

所以我的问题在这里,如何让应用程序打开最近的片段而不是活动? frag1而不是act1。

谢谢,  如果您需要更多信息,例如代码示例,请告诉我。

1 个答案:

答案 0 :(得分:0)

全局创建整数

int CurrentFragment=-1;

每当你在Activity中调用Fragment时,为Integer设置一个值,如下所示,Value应该对每个片段都是唯一的。

Fragment fragment1=new FirstFragment()
CurrentFragment=0;
  ft.replace(R.id.content_user_home, fragment1, fragment.toString());
                ft.addToBackStack(backStateName);
                ft.commit();

如果你正在调用另一个像这样的片段调用

Fragment fragment2=new SecondFragment()
CurrentFragment=1;
  ft.replace(R.id.content_user_home, fragment1, fragment.toString());
                ft.addToBackStack(backStateName);
                ft.commit();

在OnResume中检查Switch case中的CurrentFragment值

Switch(CurrentFragment){
case 0:
Fragment fragment1=new FirstFragment()
CurrentFragment=0;
  ft.replace(R.id.content_user_home, fragment1, fragment.toString());
                ft.addToBackStack(backStateName);
                ft.commit();
break;

case 1:
Fragment fragment2=new SecondFragment()
CurrentFragment=1;
  ft.replace(R.id.content_user_home, fragment1, fragment.toString());
                ft.addToBackStack(backStateName);
                ft.commit();
break;
}