J'ai implémenté un tableyout dans un fragment, la logique est simple, lorsque je clique sur un élément d'une liste, il dérive d'un fragment (tableyout), le problème se produit lorsque je reviens en arrière et sélectionne un autre élément, il me montre le tableyout mais avec des vues vierges, en passant en revue un comportement, les fragments du tablayout ne sont jamais détruits. Voici le code de l'adaptateur et le fragment principal. Merci d'avance.

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->""
        }

    }
}

Fragment principal:

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
    }
}
0
Juancarlos Granda 11 oct. 2019 à 01:03

1 réponse

Meilleure réponse

Remplacer

sectionsPagerAdapter = fragmentManager?.let { TabAdapter(it) }!!

Avec

sectionsPagerAdapter = TabAdapter(childFragmentManager)

Et cela fonctionnera à la fois correctement et supprimera automatiquement les fragments au dos (lorsque ce fragment est supprimé).

0
EpicPandaForce 11 oct. 2019 à 14:24