如何替换ViewPager2中的片段?

问题描述 投票:0回答:1

我的 android java 应用程序中有一个带有 TabLayout 的 ViewPager2,它有 2 个片段 AudioFoldersFragment 和 VideoFoldersFragment。两个片段都有一个回收器视图,并且在回收器视图中有一些项目(文件夹名称)。音频和视频文件夹片段之间的转换是通过 ViewPager2 和 TabLayout 完成的。

单击项目(文件夹名称)时,我想将该片段替换(假设我单击了 ViewPager2 片段 AudioFoldersFragment 中的一个项目)到新片段 AudioFilesList(其中包含该文件夹内的音频文件列表)。

如何实现这种片段替换?

我尝试使用 FragmentManager 但它不起作用,因为事务需要 FragmentContainerView,但我没有使用它,因为我将 ViewPager2 与 TabLayout 一起使用,这给出了错误 ViewPager2 不支持直接子视图

有什么有效的方法来替换碎片吗?

android android-fragments android-viewpager2
1个回答
0
投票

以下是在 ViewPager2 中替换片段的几种方法:

  1. 替换前使用ViewPager2.setUserInputEnabled(false),替换后使用setUserInputEnabled(true)。这可以防止用户在更改片段时滑动。

     viewPager.setUserInputEnabled(false); 
    

    //替换片段

    viewPager.setUserInputEnabled(true);

  2. 使用 ViewPager2.setCurrentItem() 更改显示的片段。

    viewPager.setCurrentItem(newFragmentIndex, false);

  3. 使用 FragmentStateAdapter 并更新数据集/片段列表。

    adapter.setFragments(updatedFragmentList); 适配器.notifyDataSetChanged();

  4. 使用 FragmentTransaction 替换 ViewPager2 中的片段,例如:

    FragmentTransaction事务=fragmentManager.beginTransaction(); transaction.replace(viewPager.getId(), newFragment); transaction.commit();

使用 ViewPager2 适配器方法,setCurrentItem 或 setUserInputEnabled 是最好的。避免 FragmentTransaction 除非你正确处理 backstack。

© www.soinside.com 2019 - 2024. All rights reserved.