Как показать HomeAsUp при использовании графика навигации Android

У меня есть проблема, чтобы показать HomeAsUp . Я думаю, что есть такой способ связать NavColtroller с ActionBar. поэтому мне не нужно настраивать панель инструментов вручную для каждого фрагмента, в основном при использовании включенного возврата к предыдущему экрану.

2 ответа

Я нашел ответ

После настройки панели инструментов добавьте эту команду в действие:

NavigationUI.setupActionBarWithNavController(this, Navigation.findNavController(this, R.id.nav_host_fragment));

На самом деле этого недостаточно.. потому что HomeAsUp будет виден, но не работает!

Чтобы это работало, необходимо переопределить этот метод:

@Override
public boolean onSupportNavigateUp() {
    return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp()
            || super.onSupportNavigateUp();
}

Не забудьте иметь правильные атрибуты в графе (popUpTo и popUpToInclusive):

 <fragment
    android:id="@+id/subFragment"
    ...
    >
    <action
        android:id="@+id/action_subFragment_pop"
        app:popUpTo="@id/homeFragment"
        app:popUpToInclusive="true" />
</fragment>

Ниже работает на меня

layoyt.xml

<ConstraintLayout>
  <Toolbar>
  <fragment>
</ConstraintLayout>

Внутри деятельности. Java

private fun setUpToolbar() {
        toolBar = findViewById(R.id.toolbar)
        toolBar.inflateMenu(R.menu.menu)
        setSupportActionBar(toolBar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setDisplayShowHomeEnabled(true)
    }
Другие вопросы по тегам