Android 重新启动活动-在容器中处理两个片段

Android 重新启动活动-在容器中处理两个片段,android,android-fragments,onresume,Android,Android Fragments,Onresume,我有一个包含容器的活动。我有两块碎片要放进这个容器里。片段是碎片列表和碎片细节 我第一次将列表片段添加到容器中 MainActivity OnCreate if (savedInstanceState == null) { ListFragment listFragment = new ListFragment(); ft.add(R.id.fragment_container, listFragment, "LIST"); ft.commit(); } 当用户单击列

我有一个包含容器的活动。我有两块碎片要放进这个容器里。片段是碎片列表碎片细节

我第一次将列表片段添加到容器中

MainActivity OnCreate

 if (savedInstanceState == null) {
    ListFragment listFragment = new ListFragment();
    ft.add(R.id.fragment_container, listFragment, "LIST");
    ft.commit();
}
当用户单击列表时,我用细节片段替换容器

操作按钮

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, detailFragment); 
fragmentTransaction.commit();


当我重新启动活动时,问题出现了。如何知道是否需要再次请求列表数据,或者是否显示了详细信息片段?因为在我的onResume方法中,两个片段都是空的。

您已经在检查savedInstanceState,这是您的第一步

查看此文档以了解详细信息:

密钥非常简单,只需在onSaveInstanceState方法中保存当前状态,然后在onRestoreInstanceState上恢复状态

savedInstanceState是一个bundle,bundle对象用于在活动和片段之间存储和传递数据,因此,您需要在其中存储一个布尔变量,以确定要显示的片段,并根据您可以使用的布尔标志在恢复时还原此片段

getFragmentManager().FindFragmentByTag(string tag)

检查它是否为null,然后可以检查返回的片段是否可见,通常还需要重置适配器

是否有其他方法传递“激活片段”而不是传递布尔值?因为在我的选择中,这应该是一种干净的方式。你不能传递捆绑包中的对象,除非它们是可包裹的或可序列化的,这对于碎片来说是不可能或非常困难的,而且这与你应该做的正好相反,安卓会删除你的碎片以释放内存,如果你存储它,这有什么意义?!,如果你的片段也有信息存储在捆绑包中,比如字符串和数字,如果这就是你所说的“清理”的意思,那就相当简单和直接了。我是否可以在onResume方法中访问捆绑包?我不确定,但我不这么认为。。。重写链接中的2个方法。。一个用于保存以恢复