Кнопка Back and Up с различным поведением в навигационном компоненте Jetpack - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать пункт назначения, когда при нажатии назад / вверх приложение закрывается. Поэтому я установил popUpTo для начального пункта назначения и установил для popUpToInclusive значение true. Проблема в том, что когда я нажимаю кнопку «Назад», приложение закрывается, как и предполагалось, но если я нажимаю кнопку «Вверх» (стрелка назад на панели инструментов), действие воссоздается ...

навигационный график:

<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/main_graph"
    app:startDestination="@id/call">

    <fragment
        android:id="@+id/call"
        android:name="com.example.navigationplayground.main.CallFragment"
        android:label="Call"
        tools:layout="@layout/fragment_call" />
    <fragment
        android:id="@+id/agenda"
        android:name="com.example.navigationplayground.main.AgendaFragment"
        android:label="Agenda"
        tools:layout="@layout/fragment_agenda" >
        <action
            android:id="@+id/openDetail"
            app:destination="@id/detailFragment"
            app:popUpTo="@+id/call"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/detailFragment"
        android:name="com.example.navigationplayground.main.DetailFragment"
        android:label="Detail"
        tools:layout="@layout/fragment_detail"/>

</navigation>

пример приложения: https://github.com/LipeDuoli/navPlayground

посмотрите поведение кнопки «назад» и «вверх» на подробном экране

1 Ответ

0 голосов
/ 31 октября 2018

Проблема в том, что up и back ведут себя по-разному.

Кнопка «Вверх» никогда не выходит из вашего приложения

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

Если вы не хотите следовать указаниям, один из возможных способов решить вашу ситуацию - изменить эту строку

val appBarConfiguration = AppBarConfiguration(setOf(R.id.call, R.id.agenda))

К этому

val appBarConfiguration = AppBarConfiguration(setOf(R.id.call, R.id.agenda, R.id.detailFragment))

Это в основном означает, что ваш пункт назначения start может быть одним из списка выше. И start означает, что пользователь выйдет из приложения после повторного нажатия на этом экране.

Подробнее:

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