Как показать 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)
}