Отобразить кнопку возврата на панели инструментов на первом экране графика навигации - PullRequest
1 голос
/ 02 мая 2019

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

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

Я уже настроил панель инструментов с приведенным ниже кодом в методе onCreate () моего хоста,

 setSupportActionBar(toolbar);
 if (getSupportActionBar() != null) {
   getSupportActionBar().setDisplayHomeAsUpEnabled(true);
   getSupportActionBar().setDisplayShowHomeEnabled(true);
 }
NavigationUI.setupActionBarWithNavController(this, navHostFragment.getNavController());

Я вижу кнопку "Назад" / стрелку назад на втором экране моего графика, но не на первом экране.

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/navigation"
    app:startDestination="@id/listing">

    <fragment
        android:id="@+id/listing"
        android:name=".ui.ItemsListingFragment"
        android:label="Items"
        tools:layout="@layout/items_listing" >
        <action
            android:id="@+id/listToQuantity"
            app:destination="@id/quantity"
           />
        <action
            android:id="@+id/listToReason"
            app:destination="@id/reason"
            />
    </fragment>
    <fragment
        android:id="@+id/quantity"
        android:name=".ui.ItemQuanitySelectionFragment"
        android:label="Items"
        tools:layout="@layout/fragment_item_quanity_selection" >
        <action
            android:id="@+id/quantityToReason"
            app:destination="@id/reason"
            />
    </fragment>
    <fragment
        android:id="@+id/reason"
        android:name=".ui.ItemReasonFragment"
        android:label="Items"
        tools:layout="@layout/fragment_item_reason">
    </fragment>
</navigation>

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

1 Ответ

5 голосов
/ 25 мая 2019

Как вы заметили, навигационный компонент показывает кнопку возврата по всем пунктам назначения, кроме верхнего уровня. Он использует AppBarConfiguration, чтобы определить, какие пункты назначения считаются «верхними уровнями».

Так что вам нужно:
1) создать AppBarConfiguration без адресатов верхнего уровня
2) вызвать версию с тремя аргументами setupActionBarWithNavController

AppBarConfiguration abc = new AppBarConfiguration.Builder().build();
NavigationUI.setupActionBarWithNavController(this, navHostFragment.getNavController(), abc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...