Как сделать так, чтобы кнопка возврата для фрагмента настроек переходила на запускающий фрагмент с aac

Итак, у меня проблема с навигацией AAC. У меня есть несколько фрагментов в одном действии. Я раздуваю опции меню в MainActivity, чтобы каждый фрагмент имел доступ к пункту меню, который открывает настройки. Проблема в том, что каждый раз, когда я нажимаю кнопку «Назад» на фрагменте, он не возвращается к тому фрагменту, который его запустил. Он восходит к исходному фрагменту. Есть ли способ убедиться, что это поведение гарантировано? Спасибо


person Beast77    schedule 13.02.2019    source источник
comment
Вы вызывали фрагмент по идентификатору пункта меню?   -  person Hussnain Haidar    schedule 13.02.2019


Ответы (2)


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

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return NavigationUI.onNavDestinationSelected(item,navController) || super.onOptionsItemSelected(item)
}

И ваш пункт меню:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:app="http://schemas.android.com/apk/res-auto">
<item
        android:id="@+id/settingsFragment"
        android:title="Settings"
        android:menuCategory="secondary"
        app:showAsAction="never" />

MenuCategory = "secondary" will not pop out back stack to start destination.

person Hussnain Haidar    schedule 13.02.2019
comment
Будь я проклят, но это работает!! Спасибо. Позвольте мне отметить это как правильный ответ - person Beast77; 13.02.2019
comment
я тоже... не верила, что такое бывает. - person Hussnain Haidar; 13.02.2019
comment
Это работает. Однако я использую Java для реализации компонента навигации AAC. Хотя идея та же. Еще раз спасибо. Вернуться к работе сейчас. - person Beast77; 13.02.2019

Вы должны использовать FragmentManager и добавить фрагмент в BackStack.

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

person P. Vera    schedule 13.02.2019
comment
Если он использует Navigation AAC, ему не нужно напрямую касаться FragmentManager. - person EpicPandaForce; 13.02.2019
comment
Как мне это сделать @EpicPandaForce? Потому что способ, предложенный П. Верой, предназначен для более старого метода простого использования навигационного ящика, а не навигации aac. - person Beast77; 13.02.2019
comment
Ребята, проверьте ответ, который я отметил как правильный выше. это блестяще - person Beast77; 13.02.2019