【发布时间】:2015-07-21 09:48:09
【问题描述】:
我正在创建一个在其主要活动中使用导航抽屉的应用程序。在抽屉中,用户可以浏览 8 个不同的片段。我目前正在使用
fragmentTransaction.replace(R.id.container,MyFragment)
浏览片段,但对于用户体验来说并不是最好的,因为它每次都会重新加载片段并且导航抽屉滑动不流畅。我尝试使用
fragmentTransaction.add(R.id.container,MyFragment)
然后隐藏所有其他片段,但它变得令人困惑并且它不能很好地工作,特别是当从另一个片段调用片段时。有没有一种方法可以让导航更加流畅,而无需在每次选择片段时都重新加载?
【问题讨论】:
-
我认为在内存中保留 8 个片段并不是一个好主意。我会选择容器活动,所以 1 个片段 1 个活动,或类似的东西。
-
你能不能解释的更清楚些?
-
您可以使用一个活动作为父项,并在其中实例化一个特定片段(8 个中的 1 个)。这样,当您导航抽屉时,您将启动一个新活动(带有复制的抽屉)。解决方案取决于片段之间的语义相关性。如果它们是原子的、孤立的,请尝试上述解决方案,如果它们以某种方式相关,您可以考虑使用选项卡并使用选项 setOffscreenPageLimit(3) 查看寻呼机。
-
两种解决方案(查看寻呼机和活动)通常一次显示一个片段,因此您无需隐藏其他片段。如果您要使用视图寻呼机并且有一些代码应该在用户可见特定片段时执行,您可以使用 onPageSelected(来自 ViewPager.OnPageChangeListener)。
标签: android