Всплывающее окно компонента навигации, чтобы не убирать кнопку вверх - PullRequest
0 голосов
/ 02 января 2019

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

<action
  android:id="@+id/navigate_to_main_screen"
  app:destination="@id/fragment_main_screen"
  app:popUpTo="@+id/navigation_main"
  app:popUpToInclusive="true"/>

Это работает почти какожидается.Кнопка «Назад» и значок «вверх» на панели приложения не переходят к предыдущему фрагменту.Кнопка возврата системы выходит из приложения.

Однако кнопка «вверх» на панели приложения все еще находится там, щелкнув по ней, вы ничего не сделаете, как ожидалось.Что я делаю неправильно?Почему это все еще здесь?

В основной деятельности у меня уже есть

AppBarConfiguration config =
    new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, config);

и

@Override
public boolean onSupportNavigateUp() {
  return navController.navigateUp() || super.onSupportNavigateUp();
}

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

Используемая версия библиотеки:

implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha09'
implementation 'android.arch.navigation:navigation-ui:1.0.0-alpha09'

1 Ответ

0 голосов
/ 02 января 2019

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

Чтобы решить вашу проблему, замените

AppBarConfiguration config =
    new AppBarConfiguration.Builder(navController.getGraph()).build();

на

AppBarConfiguration config =
        new AppBarConfiguration.Builder(R.id.navigation_main, R.id.fragment_main_screen).build();

Подробнее здесь: AppBarConfiguration

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