为了账号安全,请及时绑定邮箱和手机立即绑定

当 Activity 重新启动时,如何恢复 Activity 的片段?

当 Activity 重新启动时,如何恢复 Activity 的片段?

慕桂英4014372 2022-12-15 15:52:49
我正在测试系统因内存不足而终止应用程序进程后用户进入我的应用程序的情况。我看到了意想不到的行为,希望得到一些帮助。在我的应用程序中,我有一个活动,我们称之为ActivityA,它会立即创建一个片段,Fragment A并进行片段替换。 FragmentA显示其中ListView包含两个项目的 a。如果用户单击第一个项目,Fragment B则会创建第二个片段并替换FragmentA. 否则,FragmentA将创建另一个并替换原来的FragmentA. 我正在尝试创建一个文件目录树。 FragmentA用于目录,FragmentB用于文件。假设用户点击了一个文件。这是测试阶段,用户切换到另一个应用程序,系统因内存不足而终止我的应用程序进程。然后,用户返回到我的应用程序,希望一切都保持原样。但是,实际发生的是Fragment A(父目录)而不是Fragment B(文件)。当用户单击后退按钮时,Fragment B将显示(文件)。我做错了什么导致系统以这种方式恢复后台堆栈?
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

当您调用 时,Fragments不为空super.onCreate()时会自动恢复其当前状态。savedInstanceState


因此,如果您希望通过添加初始片段来进行一次设置,则应始终在其周围加上一个if (savedInstanceState == null)检查:


@Override

public void onCreate(Bundle savedInstanceState)

{

    // I assume you accidentally left out these lines

    super.onCreate(savedInstanceState);

    setContentView(R.id.your_content_view);


    if (savedInstanceState == null) {

        FragmentA fragA = new FragmentA();

        FragmentTransaction fragmentTransaction = 

        getSupportFragmentManager().beginTransaction();

        fragmentTransation.replace(R.id.basic_frame, fragA);

        fragmentTransaction.commit();

    }

}

查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信