Переход к предпочтительному фрагменту с использованием компонента навигации - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь перенести приложение среднего размера на новый компонент Android navigation.

В настоящее время мое приложение состоит из single activity, и я планирую сохранить его таким же (дляэто важно);Итак, я столкнулся с проблемой, в которой у меня есть фрагмент настроек (PreferenceFragment), по которому можно перейти, в основном, к любому другому фрагменту.Эта навигация осуществляется через меню в панели приложения, поэтому onOptionsItemSelected (содержащий эту навигацию) входит в основное действие.

Navigation graph

I 'Я не могу понять, как правильно подключить settingsFragment к другим.Соединение со всеми остальными кажется мне спагетти.

  1. Должно ли settingsFragment быть связано со всем другим фрагментом?

  2. Должен ли я отказаться отархитектура приложения с одним действием, поскольку Google не дает достаточных причин (или каких-либо причин) для ее поддержки?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

, но если ваши предпочтения иерархичны, вы получаете Fragment <insert fragment name here> declared target fragment <guid> that does not belong to this FragmentManager!, когда нажимаете на дочернее предпочтение.

Я пока не нашел решения для этого.

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

Для решения вашей проблемы вы можете использовать global actions.Чтобы использовать их, вам нужно определить действие внутри тега <navigation>, а не внутри <fragment>, как обычно.Ваш навигационный граф будет содержать следующий код

<?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">

    <!--Your other fragments-->


    <!--Settings fragment-->
    <fragment
        android:id="@+id/settingsFragment"
        android:name="com.example.oleksii.stackoverflow.SettingsFragment"/>

    <!--Global action-->
    <action android:id="@+id/open_settings_fragment"
        app:destination="@id/settingsFragment"/>
</navigation>

В редакторе графиков он будет отображаться следующим образом (просто стрелка слева от destination):

enter image description here

Подробнее: https://developer.android.com/topic/libraries/architecture/navigation/navigation-global-action

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