問題タブ [android-navigation-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ナビゲーション コンポーネントを使用してフラグメントがバックスタックに追加されない
情報:
NavHostFragment
アプリの for each 機能をプログラムで挿入しています。それぞれNavHostFragment
に独自のナビゲーション グラフがあります。ダガーは、FragmentFactory
各機能に固有のものを使用してそれらを提供しています。これは、MVVM アーキテクチャを使用した単一アクティビティ構造です。
レポ: https://github.com/mitchtabian/DaggerMultiFeature/tree/nav-component-backstack-bug
ブランチ「nav-component-backstack-bug」をチェックアウトします。
問題
グラフに移動すると、フラグメントがバックスタックに追加されません。追加される唯一のフラグメントは、最近アクセスされたフラグメントです。したがって、スタック サイズは常に 1 のままです。
FragmentFactory
もともと を に設定していなかったからだと思っていましたChildFragmentManager
が、何も変わりません。関連するコードについては、以下のコード スニペットを参照してください。または、プロジェクトをチェックアウトして実行します。と から現在バックスタックにあるフラグメントを出力するログがChildFragmentManager
ありSupportFragmentManager
ます。両方とも 1 の定数サイズを持ちます。
Feature1NavHostFragment.kt
カスタムNavHostFragment
の一つです。create()
コンパニオン オブジェクトの機能は、それらを作成する方法です。
MainActivity.kt
これは、NavHostFragment
MainActivity で を作成する方法の例です。
Feature1MainFragment.kt
これは、グラフ内の他のフラグメントに移動する方法の例です。
概要
私が言ったように、すべてのフラグメントで、ChildFragmentManager
と の両方のバックスタックを出力していSupportFragmentManager
ます。両方とも 1 の一定サイズです。スタックに追加されるのではなく、グラフに移動すると、フラグメントが置き換えられているようです。
とにかく、これを読んでくれてありがとう。