после двух последовательных addToBackStack размер supportFragmentManager.fragments равен одному - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть основная активность с BottomNavigationView. в первой вкладке BottomNavigationView у меня есть фрагмент. щелчком пользователя я открываю два фрагмента следующим образом:

    fragmentManager.beginTransaction()
            .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left,R.anim.slide_out_right)
            .replace(R.id.mainFragmentContainer, FinancialFragment.newInstance(),"FinancialFragment")
            .addToBackStack("FinancialFragment")
            .commit()

с другим тегом. когда пользователь нажимает на каждую нижнюю кнопку навигации, я извлекаю все фрагменты из стека следующим кодом:

   val fragments = supportFragmentManager.fragments
    val manager = supportFragmentManager
    val trans = manager.beginTransaction()
    var fragmentList = readFragmentsNameFromAssets()
    for (i in fragments.size - 1 downTo 0) {
        val fragment = fragments[i]
        if( fragment.tag ==fragmentList[0] || fragment.tag == fragmentList[1] || fragment.tag ==fragmentList[2] || fragment.tag ==fragmentList[3] || fragment.tag ==fragmentList[4] || fragment.tag ==fragmentList[5]
                || fragment.tag ==fragmentList[6] || fragment.tag ==fragmentList[7] || fragment.tag ==fragmentList[8] || fragment.tag ==fragmentList[9] || fragment.tag ==fragmentList[10] || fragment.tag ==fragmentList[11]
                || fragment.tag ==fragmentList[12] || fragment.tag ==fragmentList[13] || fragment.tag ==fragmentList[14] || fragment.tag ==fragmentList[15] || fragment.tag ==fragmentList[16]
                || fragment.tag ==fragmentList[17] || fragment.tag ==fragmentList[18] || fragment.tag ==fragmentList[19] ){
                trans.remove(fragment).commit()
                manager.popBackStack(fragment.tag, FragmentManager.POP_BACK_STACK_INCLUSIVE)
        }
    }

У меня проблема: когда я открываю два последовательных фрагмента, размер supportFragmentManager.fragments равен одному и кажется, что второй фрагмент не добавляется в стек и не всплывает, поэтому, когда я нажимаю кнопку bottomNaigation, просто возвращаемся к предыдущему фрагменту.

...