Остановить обновление фрагмента в нижней части навигации с помощью navhostAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Остановить обновление фрагмента в нижней части навигации с помощью navhost

Сообщение Anonymous »

Эту проблему задавали уже несколько раз, но сейчас на дворе 2020 год. Кто-нибудь уже нашел хорошее и удобное решение?

Я хочу быть возможность перемещаться с помощью нижнего элемента управления навигацией без обновления фрагмента каждый раз при их выборе. Вот что у меня есть на данный момент:

navigation/main.xml:
activity_mail.xml:
MainActivity.kt:

Код: Выделить всё

class MainActivity : AppCompatActivity() {

private var drawerLayout: DrawerLayout? = null
private var navigationView: NavigationView? = null
private var bottomNavigationView: BottomNavigationView? = null
private lateinit var appBarConfiguration: AppBarConfiguration

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

drawerLayout = findViewById(R.id.drawer_layout)
navigationView = findViewById(R.id.navigationView)
bottomNavigationView = findViewById(R.id.bottomNavigationView)

val navController = findNavController(R.id.nav_host_fragment)
appBarConfiguration = AppBarConfiguration(setOf(R.id.markets, R.id.explore, R.id.news, R.id.home), drawerLayout)

setupActionBarWithNavController(navController, appBarConfiguration)

findViewById(R.id.navigationView)
.setupWithNavController(navController)

findViewById(R.id.bottomNavigationView)
.setupWithNavController(navController)

}

override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.search) {
startActivity(Intent(applicationContext, SearchableActivity::class.java))
}
return super.onOptionsItemSelected(item)
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.options_menu, menu)
return super.onCreateOptionsMenu(menu)
}
}
Во фрагменте я делаю несколько вызовов своих служб для получения данных в onCreateView, при возобновлении фрагмента я предполагаю, что эти вызовы больше не будут быть выполнен, и состояние фрагмента должно быть сохранено.

Подробнее здесь: https://stackoverflow.com/questions/600 ... ng-navhost
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»