2016-08-17 59 views
0

我使用FragmentStatePagerAdapter在具有相同布局的片段之间导航。在片段的onActivityCreated()中,我将活动的操作栏设置为当前片段的工具栏。问题在于viewpager预加载了片段,因为屏幕外页面限制设置为2,这使除最后的setSupportActionBar()调用之外的所有调用都无效。任何帮助?Android FragmentStatePagerAdapter setSupportActionBar()

我知道我可以保留对当前所有活动页面的引用,并且在onPageSelected()中调用setSupportActionBar()。但这被认为是一种不好的做法,对吧?

更新:刚刚确认,即使使用WeakReference,碎片仍然不会被释放。

回答

0

解决方法之一是使用setUserVisibleHint(boolean isVisibleToUser)片段的方法,并在那里设置工具栏。

您也可以在ViewPager上附加OnPageChangeListener,并在选择该页面时更新工具栏。

+0

对于前一种解决方案,我在'onCreateView()'之前调用了'setUserVisibleHint()',我可以确认预加载的片段在用户可见之前也会调用'onCreateView()'。片段首先调用的顺序是不可预知的。对于第二种解决方案,干扰片段管理不是不好的方法吗? – mljli

相关问题