Навигация по Android Как добавить кнопку «Навигация вверх» на фрагменте 2-го уровня - PullRequest
0 голосов
/ 25 октября 2019

Я использую график навигации для размещения своих фрагментов. Как добавить кнопку «Назад» из more_menu_help, чтобы она могла вернуться к nav_more?

См. Скриншот: enter image description here

Я попытался сделать следующее, однако,значок стрелки назад отображается во фрагментах nav_payments, nav_benefits и nav_more. Я просто хочу добавить стрелку назад в more_menu_help:

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


    val navController = Navigation.findNavController(this, R.id.nav_host_fragment)
    nav_bar.setupWithNavController(navController)

    // Set up ActionBar
    setSupportActionBar(toolbar)
    setupActionBarWithNavController(this, navController, null)

    nav_bar.setupWithNavController(navController)

    supportActionBar?.setDisplayHomeAsUpEnabled(false)
    supportActionBar?.setDisplayShowHomeEnabled(false)
    supportActionBar?.setDisplayShowTitleEnabled(false)

}

См. Экран преимуществ. Здесь отображается стрелка вверх по кнопке навигации назад, чего я не хочу. enter image description here

1 Ответ

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

Согласно документации UI :

По умолчанию кнопка навигации скрыта, когда пользователь находится в пункте назначения верхнего уровня графика навигации, и отображается каккнопка «Вверх» в любом другом месте назначения.

Если вы хотите настроить, какие места назначения считаются местами назначения верхнего уровня, вместо этого вы можете передать набор идентификаторов места назначения в конструктор, как показано ниже:

val appBarConfiguration = AppBarConfiguration(
    setOf(R.id.nav_home, R.id.nav_payments, R.id.nav_benefits, R.id.nav_more))

Затем передайте этот AppBarConfiguration объект при вызове setupActionBarWithNavController:

setupActionBarWithNavController(navController, appBarConfiguration)

Обратите внимание, что, поскольку вы используете ActionBar, вы также должны передать тот же AppBarConfiguration объектпри переопределении onSupportNavigateUp() в соответствии с разделом ActionBar :

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

Таким образом, вы должны сохранять объект AppBarConfiguration на уровне класса (а не локальную переменную в onCreate().

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