我有一个Android app结构如下
Activity -> Fragment -> FragmentViewPager with 3 fragments
(Generic Activity)
(Generic Fragment for purpose of resuability)
(Generic Fragment hosts a view pager with 3 fragments,
each of these fragments has some list view and random other stuff)
目前,在onViewChanged
(我使用android注释,所以下面的代码在@AfterView的方法中运行)的Acitivity,我做
Fragment genericFragment = FragmentBuilder().build();
getSupportFragmentManager().beginTransaction().add(genericFragment);
添加通用片段。
在GenericFragment的onViewChanged()
中,我设置了嵌套片段和viewPagers。
Fragment f1 = FragmentBuilder().build();
Fragment f2 = FragmentBuilder().build();
Fragment f3 = FragmentBuilder().build();
viewPager.setAdapter(new FragmentViewPager(getChildFragmentManager()) {
// return f1, f2, f3 in getItem();
});
我注意到的第一个问题是当GenericActivity被杀死时(通过不保持活动),下次加载时,似乎fragmentManager中已经存在genericFragment。 (FragmentManager.getFragments()
返回一个列表。
问题1:恢复单个片段(在这种情况下是通用片段)的正确方法是什么?我可以找到旧片段。但是我能做些什么呢?或者我只是使用新的GenericFragment调用... beginTransation().replace()
?新的GenericFragment仍然可以收到旧数据吗?
问题2:由于我的嵌套片段包含列表和内容,因此我想跟踪用户加载的内容以及用户所在的页面。我理解如何调用viewPager来获取这些信息,但是为这些嵌套片段存储/恢复这些数据的正确方法是什么?