теперь я пробую навигацию androidX и нижнюю панель навигации, когда я использую ее, как показано ниже
supportFragmentManager = getSupportFragmentManager();
navHostFragment =(NavHostFragment)supportFragmentManager.findFragmentById(R.id.frag_nav);
navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(navigation, navController);
Я обнаружил проблему, каждый раз переключая bottomNavigationBar, фрагмент будет воссоздан, вся сетевая задача в целевом фрагменте будет повторяться, как сохранить состояние фрагмента при переключении в androidX?
У меня тоже была такая же проблема. Я использую BottomNavigationView с компонентами архитектуры навигации, и каждый раз при воссоздании фрагмента. Это предполагаемое поведение, как вы можете видеть в системе отслеживания проблем Google (https://issuetracker.google.com/issues/109856764).
Итак, правильный подход к этому - сохранить текущее состояние представления в ViewModel и наблюдать это состояние в каждом вновь созданном фрагменте. Вам необходимо выполнять все сетевые задачи в ViewModel.
Также позаботьтесь о способе получения ViewModel внутри фрагмента. Если вы сделаете это так, как этот viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyViewModel::class.java), ViewModel получит область видимости фрагмента (она будет уничтожена при уничтожении фрагмента). Вы должны получить ViewModel с областью действия, чтобы она могла выжить при переключении между фрагментами. Можно сделать вот так viewModel = ViewModelProviders.of(activity!!, viewModelFactory).get(MyViewModel::class.java)
Решение для этого от Google github.com/android/architecture-components-samples/tree/master /…