情境:
我有一个包含ViewPager的片段,其中包含具有不同值的单个片段的5个实例(不同),每个片段都有一个包含某种项目的listivew。
问题:
当我点击listView的项目(比如第1页)时流程顺利但是当我从那里回来的那一刻(在main_activity中重写OnBackPressed(稍后将讨论)),viewPager无法加载subFragments
但是,当我切换到第2页或第3页时,它会显示,然后在返回第1页时,它会立即显示。
OnBackPressed():
我在这里维护一个手动堆栈。当我单击ListView的项目时,当前的片段实例(父片段片段)进入堆栈。当用户回来时,该实例从堆栈中弹出,我将其替换为活动FrameLayout容器。
参考文献:
伙计们,我真的很生气,请帮帮我。
答案 0 :(得分:2)
坦率地说,我对片段的工作并不多。 但似乎每次切换到其他页面时页面都会被丢弃。我不确定但是如果有一种方法可以让android管理它并将页面持久保存在其内存中,它可能会解决问题
答案 1 :(得分:1)
最后,我能够找到解决此问题的方法,其中包括两件事:
替换片段时调用
ft.replace(R.id.content_frame, frag).addToBackStack(null);
启动ViewPager时,要使用的片段管理器是:
mAdapter = new myAdapter(getChildFragmentManager());
实际上问题是,除非你明确地将该实例添加到backstack,否则android无法识别并加载片段的旧实例。因此,在将其添加到BackStack后,几乎不需要维护自己的手动堆栈,但您仍然可以这样做。