Как я могу уничтожить фрагменты табуляции в обратном событии? - PullRequest
0 голосов
/ 11 октября 2019

Я реализовал таблицу во фрагменте, логика проста, когда я нажимаю на элемент в списке, который превращается во фрагмент (таблица), проблема возникает, когда я возвращаюсь и выбираю другой элемент, который показывает мне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
    }
}

1 Ответ

0 голосов
/ 11 октября 2019

Заменить

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

на

sectionsPagerAdapter = TabAdapter(childFragmentManager)

И он будет работать правильно и автоматически удаляют фрагменты на спине (при удалении этого фрагмента).

...