如何在后台事件中销毁 tablayout 片段?
How can I destroy the tablayout fragments at the back event?
我在一个片段中实现了一个 tableyout,逻辑很简单,当我点击列表中的一个项目时它派生到一个片段(tableyout),当我返回并 select另一个项目它向我展示了 tableyout 但空白视图,审查了 tablayout 的片段永远不会被破坏的行为。这是适配器代码和主要片段。提前致谢。
class TabAdapter(fm: FragmentManager): FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when(position){
0->FormPartOne()
1->FormPartTwo()
2->FormPartThree()
else->FormPartOne()
}
}
override fun getCount(): Int {
return 3
}
override fun getPageTitle(position: Int): CharSequence? {
return when(position){
0->"1"
1->"2"
2->"3"
else->""
}
}
}
主要片段:
class ReceptionFormFragment : Fragment() {
private lateinit var receptionOrderViewModel: ReceptionOrderViewModel
private lateinit var tabs: TabLayout
private lateinit var viewPager: ViewPager
private lateinit var sectionsPagerAdapter: TabAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_reception_form, container, false)
sectionsPagerAdapter = fragmentManager?.let { TabAdapter(it) }!!
viewPager = root.findViewById(R.id.view_pager)
viewPager.adapter = sectionsPagerAdapter
tabs = root.findViewById(R.id.tabs)
tabs.setupWithViewPager(viewPager)
return root
}
}
替换
sectionsPagerAdapter = fragmentManager?.let { TabAdapter(it) }!!
有
sectionsPagerAdapter = TabAdapter(childFragmentManager)
而且它都可以正常工作和自动移除背面的碎片(当这个碎片被移除时)。
我在一个片段中实现了一个 tableyout,逻辑很简单,当我点击列表中的一个项目时它派生到一个片段(tableyout),当我返回并 select另一个项目它向我展示了 tableyout 但空白视图,审查了 tablayout 的片段永远不会被破坏的行为。这是适配器代码和主要片段。提前致谢。
class TabAdapter(fm: FragmentManager): FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when(position){
0->FormPartOne()
1->FormPartTwo()
2->FormPartThree()
else->FormPartOne()
}
}
override fun getCount(): Int {
return 3
}
override fun getPageTitle(position: Int): CharSequence? {
return when(position){
0->"1"
1->"2"
2->"3"
else->""
}
}
}
主要片段:
class ReceptionFormFragment : Fragment() {
private lateinit var receptionOrderViewModel: ReceptionOrderViewModel
private lateinit var tabs: TabLayout
private lateinit var viewPager: ViewPager
private lateinit var sectionsPagerAdapter: TabAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_reception_form, container, false)
sectionsPagerAdapter = fragmentManager?.let { TabAdapter(it) }!!
viewPager = root.findViewById(R.id.view_pager)
viewPager.adapter = sectionsPagerAdapter
tabs = root.findViewById(R.id.tabs)
tabs.setupWithViewPager(viewPager)
return root
}
}
替换
sectionsPagerAdapter = fragmentManager?.let { TabAdapter(it) }!!
有
sectionsPagerAdapter = TabAdapter(childFragmentManager)
而且它都可以正常工作和自动移除背面的碎片(当这个碎片被移除时)。