ナビゲーションコンポーネントを使用して設定フラグメントに移動する 質問する

ナビゲーションコンポーネントを使用して設定フラグメントに移動する 質問する

中規模のアプリを新しい Androidnavigationコンポーネントに移行しようとしています。

現在、私のアプリは で構成されておりsingle activity、これをそのまま維持する予定です (この点に関しては)。そのため、PreferenceFragment基本的に他のすべてのフラグメントから移動できる設定フラグメント ( ) があるという問題に直面しています。このナビゲーションはアプリ バーのメニューから行われるため、onOptionsItemSelected(このナビゲーションを含む) はメイン アクティビティにあります。

ナビゲーショングラフ

settingsFragmentを他のものに接続する正しい方法がわかりません。他のすべてに接続すると、スパゲッティのように思えます。

  1. settingsFragment他のすべてのフラグメントに接続する必要がありますか?

  2. Google がサポートする十分な理由 (または理由がまったく) を示していないので、単一アクティビティ アプリケーション アーキテクチャを放棄すべきでしょうか?

ベストアンサー1

問題に対処するには、 を使用できます。それらを使用するには、通常のようにタグ内ではなく、タグ内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)。

ここに画像の説明を入力してください

詳細:https://developer.android.com/topic/libraries/architecture/navigation/navigation-global-action

おすすめ記事