0

私は、左側にメニューの選択肢のリストを表示し、中央にコンテンツを表示する、古典的なリスト コンテンツ パターンを持つアプリケーションで作業しています。さまざまなメニュー選択により、コンテンツが新しい情報を表示する対応するフラグメントと交換されます。

適切なアップ ナビゲーションの実装に苦労しています。

|---------------------------------------|
|< Frag. B |                B1  B2  B3  |
|----------|----------------------------|
|Fragment A|                            |
[Fragment B]                            |
|Fragment C|        Fragment B.2        |
|Fragment D|                            |
|Fragment E|                            |
|----------|----------------------------|

上の図では、ユーザーは Fragment B.2 に移動しています。彼は最初にメニューからフラグメント B を選択し、その後ボタンを押して、フラグメント B に「さらに」進み、フラグメント B.2 に移動しました。

ユーザーがここで HOME (ホームのようにアップ) ボタンを押すと、フラグメント B に戻ります。これは意図したとおりに機能しています。

ただし、フラグメント B.2 内には、ユーザーをフラグメント E.2 に移動させるボタンが ActionBar にあります。

|---------------------------------------|
|< Frag. E |                E1  E2  E3  |
|----------|----------------------------|
|Fragment A|                            |
|Fragment B|                            |
|Fragment C|        Fragment E.2        |
|Fragment D|                            |
[Fragment E]                            |
|----------|----------------------------|

ユーザーがフラグメント E.2 に到達すると、バック スタック内の前のフラグメントはフラグメント B.2 になります。私の現在の実装はgetActivity().onBackPressed()、HOME ボタンが押されたときに呼び出すだけで、ユーザーはフラグメント B.2 に戻るだけです。これはユーザーにとって意味をなさないので、ユーザーをフラグメント E に移動させるシステムを実装したいと思います (フラグメント B.2 はバックスタックの前のフラグメントですが)。

私の当面のアイデアは、すべてのフラグメント内で、バックスタックの前のフラグメントとして動作する必要があるフラグメントへの参照を持つことでした。フラグメント B.2 はフラグメント B への参照を持ち、フラグメント E.2 はフラグメント E への参照を持ちます。HOME ボタンが押されると、前のフラグメントとして参照されるフラグメントを起動します。私はこの解決策について議論しましたが、非常にぎこちなく聞こえることは言うまでもなく、これがバックスタックに関してかなり複雑になる可能性があることにすぐに気付きました。

この種の動作を実装するスマートな方法はありますか?

4

1 に答える 1

0

簡単な答え: あなたのデザインは間違っています ホーム キーのバック プレスをシミュレートすることはまったくクレイジーです。

長い答え: そのような狂気を実現したい場合: バックスタックにフラグメントを挿入できないため、選択した ActionBar アイテムでフラグメント E を開き、フラグメント E.2 を自動的に起動しますか?

その他の解決策: フラグメント E.2 が ActionBar から開かれた場合、フラグメント E.2 の onPause() からフラグメント E を起動することもできます。

于 2013-03-02T06:36:38.610 に答える