Как заблокировать повторное создание фрагмента, когда выбраны вкладки BottomNavigationView? - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь использовать новую структуру навигации в моем примере проекта.

Я использовал BottomNavigationView в activity.xml, и он запускается с NavigationController.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_launcher)

    val navController = Navigation.findNavController(this, R.id.navHostFragment)
    NavigationUI.setupWithNavController(bottomNavigation, navController)
}

Пока замечательно, но каждый раз, когда я нажимаю на вкладки, относительные фрагменты воссоздаются каждый раз.

Как я могу предотвратить это поведение?

Я не хочу каждый раз создавать новые фрагменты.

Я просто хочу использовать первые созданные фрагменты.

Примечание: Я не использовал setOnNavigationItemSelectedListener() или других слушателей. Сама навигационная структура регенерирует фрагменты.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Чтобы избежать фрагмента воссоздания, вы можете проверить, есть ли экземпляр этого в backstack.

Вы можете использовать тег backtask для поиска конкретных экземпляров фрагмента

0 голосов
/ 10 сентября 2018

Вы можете предотвратить создание нового фрагмента каждый раз, сохранив последний созданный экземпляр фрагмента.

  1. Вам необходимо создать список стеков фрагментов: val mFragmentStacks: MutableList<Stack<Fragment>>

  2. Вам необходимо сохранить экземпляр fragmnet в соответствии с положением вкладки: mFragmentStacks[currentStackIndex].push(fragment)

  3. Сначала проверьте, есть ли в стеке запись, затем присоедините последний фрагмент, в противном случае создайте новый фрагмент.

    if (! MFragmentStacks [index] .isEmpty ()) {

    val fragment = mFragmentStacks[currentStackIndex].peek()
    

    } else {

    val fragment = DemoFragment()
    mFragmentStacks[currentStackIndex].push(fragment)
    

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...