私はかなり複雑なAndroidアプリケーション(ホームオートメーションシステムに使用))を開発しています。これは基本的に1つのアクティビティ-複数のフラグメントアプリケーションです。
アプリケーションのナビゲーションは、主にナビゲーションドロワーで構成されています。 A..F。と名付けられる6つの異なるカテゴリがあります。これらのカテゴリは独自のナビゲーション階層を持つことができますが、階層を掘り下げるときに明示的な[戻る]ボタンを使用しないことを選択しました。むしろ、常にハンバーガーアイコンを表示します。これにより、ユーザーは常にナビゲーションドロワーにアクセスでき、ハードウェアの[戻る]ボタンを使用して前のフラグメントに戻ることができます。
さて、これは悪い習慣だと言う人もいるかもしれませんが(代わりにその方法を教えてくれれば聞いてください)、アーキテクチャを変更せずに解決したい問題がまだあります。次のユースケースを参照してください。 :
使用事例:
何が起こるかは、ユーザーに表示される原因です[Bc、Bb、B、C、Bc、Bb、B、A]。
現在、私は通常、動作は正しいと思いますが、[戻る]ボタンを使用すると、ビューを複数回表示するとユーザーエクスペリエンスが低下しますか?もしそうなら、問題はどのように解決できますか?
私はあなたと同じような状況にあり、私はあなたの主張を完全に理解しています。
私の場合、ナビゲーションドロワーでセクションを切り替えると、新しいフラグメントが表示されます。ユーザーがセクション内を移動すると、フラグメントが置き換えられるため、バックスタックが大きくなります。発生している種類の問題を回避するために、ユーザーが別のセクションに移動したときに、すべてのフラグメントの状態をバックスタックに保存してから、バックスタックをクリアします(そうしないと、ユーザーはとにかく戻ることができます)。 、そして同じセクションに戻ったら、最終的にそれを復元します。
私のコードは最高ではないと思いますが、今のところ、これがこの問題に対する唯一の解決策です。誠実に言うと、ナビゲーションドロワーを備えたこの種のバックスタックスイッチには、「すぐに使える」解決策がないことにちょっと驚いています。
このアーキテクチャの1つの問題は、フラグメントのバックスタックサイズです。これを説明する方法では、スタックが非常に大きくなる可能性があります。なぜこれを行わないのですか...ユーザーがドロワーでアイテムを選択すると、そのタイプのすべてのフラグメントがフラグメントマネージャーから削除されますか?あなたの例では、これは戻るボタンをタップしたときに起こります-Bc、Bb、B、C、A