Как перейти к Half Fragment? (Компонент архитектуры навигации)

Я пытаюсь использовать компонент архитектуры навигации в своем приложении. Раньше я использовал транзакции фрагментов для достижения указанной ниже функции. В основном я хочу перейти от.

FragmentA-> FragmentB (пользовательский фрагмент частично прозрачен и составляет половину размера экрана)

Если я использую компонент навигации и попробую

Navigation.findNavController(view).navigate(R.id.action_FragmentA_to_FragmentB)

Тогда в результате FragmentA заменяется FragmentB, а фоновый фрагмент не виден.

Я хочу знать решение, разрешено ли оно компонентом архитектуры навигации.

P.S: Я слышал о вложенном узле навигации, но хорошо ли его использовать изнутри фрагмента.

Обновление:

FragmentB будет иметь действия для следующей транзакции и примера:

FragmentA-> FragmentB-> FragmentC (пользовательский фрагмент частично прозрачен и составляет половину размера экрана)

И Fragment C должен заменить FragmentB, когда пользователь нажимает кнопку возврата, и backStack должен поддерживаться для всех транзакций фрагментов.

Демо




Ответы (2)


Вы можете использовать BottomSheetDialogFragment, чтобы получить желаемый результат.
Дополнительная информация: https://developer.android.com/reference/android/support/design/widget/BottomSheetDialogFragment

person DarShan    schedule 21.11.2018
comment
Вы пробовали использовать компонент архитектуры навигации ?? и дать результат выше - person Anmol; 21.11.2018
comment
@ANMOLSRIVASTAVA не пробовала использовать архитектуру навигации, но BottomSheet может легко дать вам такой результат. - person DarShan; 21.11.2018
comment
Вам следует просто использовать нижний лист (я говорю, как человек, который написал компонент архитектуры навигации). - person ianhanniballake; 21.11.2018
comment
Я знаю, как создать bottomSheet, но архитектура навигации заменяет приведенный ниже фрагмент, а фрагмент ниже не отображается. - person Anmol; 21.11.2018
comment
Вам вообще не следует использовать навигацию для диалогов или диалоговых окон нижнего листа. Просто используйте show(), чтобы показать нижний лист. - person ianhanniballake; 21.11.2018
comment
@ianhanniballake то, что я пытаюсь достичь, - это нижнее меню, в котором будет отображаться другой фрагмент в bottomSheet на основе пользовательского ввода, поэтому, когда пользователь нажимает кнопку возврата, он не должен удалять нижний диалог, а переходить к последнему фрагменту в нижнем меню. backStack для bottomMenu. Итак, я планировал использовать компонент навигации для нижнего меню, которое будет иметь иерархию фрагментов. - person Anmol; 22.11.2018
comment
@ianhanniballake, а как насчет того, чтобы закрыть нижний лист, когда пользователь нажимает «назад»? - person papageorgiouk; 01.02.2019
comment
@papageorgiouk - диалоги уже обрабатывают системную кнопку возврата - person ianhanniballake; 01.02.2019
comment
@ianhanniballake, а когда я захочу сделать это вручную? Например, закрытие расширенной панели приложений? - person papageorgiouk; 14.02.2019

TL; DR: я использовал вложенные графики для выполнения требования.

Здравствуйте, спасибо за помощь, но навигация в BottomSheet осуществляется мной с помощью процедуры ниже.

  • MainActivity

    • NavHost(FragXYZ->FragA)
      • (Inside Fragment A)BottomSheetDialogFragment.show() to display the bottomSheetMenu
        • (Inside Fragment B) BottomSheetDialogChildFragment(start child Fragment of BottomSheetDialogFragment using Fragment Transaction) extends NavHostFragment

Демо: GitHub

person Anmol    schedule 26.11.2018