sun*_*son 7 android android-fragments android-navigation android-recyclerview android-viewpager2
我有一个Viewpager2内部Fragment(称为HomeFragment)。那Viewpager本身也包含着Fragments。当我离开HomeFragment它的视图时,其视图将被破坏,而当我向后导航时,将重新创建该视图。现在,我设置的适配器Viewpager2的HomeFragment过程中onViewCreated()。因此,当我回到该适配器将被重新创建HomeFragment,这也重新创建所有Fragments的Viewpager2和当前项目重置为0,如果我尝试重新使用的适配器,我实例化第一个创建的HomeFragment我得到一个异常,因为此检查位于FragmentStateAdapter:
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
checkArgument(mFragmentMaxLifecycleEnforcer == null);
Run Code Online (Sandbox Code Playgroud)
有人知道我在回溯时如何防止重新创建所有内容吗?否则,这是相当大的性能开销,并且会阻碍我的用户体验。
小智 0
我使用FragmentActivity而不是Fragment作为适配器构造函数的参数,它可以工作。当导航回 时HomeFragment,会重新创建适配器,但不会重新创建子片段。
以前的:
class HomeFragmentAdapter() : FragmentStateAdapter(fragment)
Run Code Online (Sandbox Code Playgroud)
现在:
class HomeFragmentAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity)
Run Code Online (Sandbox Code Playgroud)
或者
// needs FragmentActivity's lifecycle
FragmentStateAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |