我有一个应用。它基于Android JetPack导航组件,并具有带有ViewPager的Tab UI。
例如,有片段为tab ui。(不是底部记录UI(
- mainfragment:这有3个选项卡片段,如tab&ViewPager。
- 详细信息fragment
nav_graph.xml上存在这两个片段。
和其他:
- tabafragment
- tabbfragment
- tabcragment
nav_graph.xml上不存在这三个片段
我想知道的是如何从tabxfragment导航到详细信息。
实际上,导航并不困难。是一样的。我可以做导航,只是调用" findnavcontroller.navigate(("。
但是问题是"后退"按钮。
当我触摸详细信息范围的"后退"按钮时,它显示了奇怪的屏幕。只是白屏。没有tabview。
我希望它显示出tabxfragment。但这不是...
因此,我使用活动而不是细节范围解决了此问题。但是我想知道如何处理这个问题...
(对不起,我的英语技巧不佳(
我使用了此方法,它对我有用
只需像以下代码那样在主框架中使用 ViewPager2
val adapter =ViewPagerAdapter(childFragmentManager,lifecycle)
adapter.addFragment(TabAFragment(),"A")
adapter.addFragment(TabAFragment(),"B")
adapter.addFragment(TabAFragment(),"C")
binding.viewpager.adapter =adapter
adapter.notifyDataSetChanged()
然后在您的导航图中创建从大型框架到详细信息的路线
以及您的ViewPager片段(如Tabafragment(,只需从Mainfragment导航到详细信息范围
,不要忘记添加像下面的适配器
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]
}
}
最后,在您的详细信息中,只需使用以下代码即可完成当前片段
findNavController().popBackStack()