中規模のアプリを新しい Androidnavigation
コンポーネントに移行しようとしています。
現在、私のアプリは で構成されておりsingle activity
、これをそのまま維持する予定です (この点に関しては)。そのため、PreferenceFragment
基本的に他のすべてのフラグメントから移動できる設定フラグメント ( ) があるという問題に直面しています。このナビゲーションはアプリ バーのメニューから行われるため、onOptionsItemSelected
(このナビゲーションを含む) はメイン アクティビティにあります。
settingsFragment
を他のものに接続する正しい方法がわかりません。他のすべてに接続すると、スパゲッティのように思えます。
settingsFragment
他のすべてのフラグメントに接続する必要がありますか?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