gpt4 book ai didi

android - 如何使用 Jetpack 导航组件从 ViewPager 的 fragment 导航到其他 fragment ?

转载 作者:行者123 更新时间:2023-12-04 23:51:05 24 4
gpt4 key购买 nike

我有一个应用程序。
它基于 Android Jetpack Navigation 组件,并具有带有 ViewPager 的 Tab UI。

例如,有 fragment 作为 Tab UI。 (不是底部导航 UI)

  • MainFragment:这包含 3 个 Tab fragment 作为 Tab 和 ViewPager。
  • 详情 fragment

  • 这 2 个 fragment 存在于 nav_graph.xml 中。

    和别的:
  • TabAF fragment
  • TabB fragment
  • TabCF fragment

  • 这 3 个 fragment 在 nav_graph.xml 上不存在

    我想知道的是如何从 TabXFragment 导航到 DetailsFragment。

    其实导航并不难。
    是一样的。
    我可以通过调用“findNavController.navigate()”进行导航。

    但问题是“返回”按钮。

    当我触摸 DetailsFragment 上的“返回”按钮时,它会显示奇怪的屏幕。
    只是白屏。
    没有 TabView。

    我预计它会显示 TabXFragment。
    但它不...

    所以我使用 Activity 而不是 DetailsFragment 解决了这个问题。
    但我想知道我该如何处理这个问题......

    (对不起我的英语水平不好)

    最佳答案

    我使用了这种方法,它对我有用
    只需使用 ViewPager2在 MainFragment 中,如下代码

     val adapter =ViewPagerAdapter(childFragmentManager,lifecycle)
    adapter.addFragment(TabAFragment(),"A")
    adapter.addFragment(TabAFragment(),"B")
    adapter.addFragment(TabAFragment(),"C")
    binding.viewpager.adapter =adapter
    adapter.notifyDataSetChanged()
    然后在您的导航图中创建从 MainFragment 到 DetailsFragment 的路线
    在您的 ViewPager fragment (如 TabAFragment)中,只需从 MainFragment 导航到 DetailsFragment
    并且不要忘记添加如下所示的适配器
    class ViewPagerAdapter (manager: FragmentManager, lifecycle: Lifecycle) :  FragmentStateAdapter(manager,lifecycle ){
    private val fragmentList : MutableList<Fragment> =ArrayList()
    private val titleList : MutableList<String> =ArrayList()
    override fun getItemCount(): Int {
    return fragmentList.size
    }

    override fun createFragment(position: Int): Fragment {
    return fragmentList[position]
    }


    fun addFragment(fragment: Fragment, title: String){
    fragmentList.add(fragment)
    titleList.add(title)
    }

    fun getPageTitle(position: Int): CharSequence? {
    return titleList[position]
    }
    }
    最后在您的 DetailsFragment 中,只需使用下面的代码来完成当前 fragment
    findNavController().popBackStack()

    关于android - 如何使用 Jetpack 导航组件从 ViewPager 的 fragment 导航到其他 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318828/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com