問題タブ [fragment-backstack]

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.

0 投票する
1 に答える
184 参照

android - Android: フラグメントが予期しない動作をする (突然透明になる?)

フラグメントに問題があります。このコードを使用して、フラグメント間を移動します。

「メイン」フラグメント間(バックスタックなし、ユーザーが押したときに終了するようにするため(機能します)):

「内側」のフラグメント間 (バックスタックあり):

ただし、次の場合:

フラグメント A -> フラグメント A1

フラグメント A1 -> フラグメント B

戻るボタンを押す (アプリを終了する必要があります) -> フラグメント A1 に戻ります

これ起こります:

画像

A1 フラグメントはバックスタックから削除されず、バックグラウンドにとどまっているようです。考えられる解決策の1つは、すべてのフラグメントに白い背景を設定することだと思いました..しかし、これは問題を解決せず、単に非表示にするだけです. では、可能な解決策は何でしょうか?

0 投票する
2 に答える
2849 参照

android - Android フラグメントがバック スタックに追加されない

NavigationDrawer ベースのアプリケーションを実行しています。以下のような階層があります

NavigationDrawer --> RootFragment (バック スタックに追加されません) --> 詳細フラグメント (バック スタックに追加されます)

現在、ユーザーが戻るボタンを押してアプリを終了しようとしたときに、ユーザーにメッセージを表示しようとしています。ここに私が使用しているコードがあります。

バック スタックに追加された詳細フラグメントから [戻る] ボタンをクリックすると、アラート メッセージが表示されます。代わりに、ルートフラグメントに戻ることを除いて。

しかし、このようにコードを更新すると、戻るボタンを押すと、ユーザーはルート ビューに戻ります。そのため、詳細フラグメントをバックスタックに追加しても、getFragmentManager().getBackStackEntryCount() はゼロのように見えます。

rootFragment から詳細フラグメントを呼び出す方法を次に示します。

これは、ナビゲーション ドロワー サイド メニューから開かれるルート ビューです。

ここで何が間違っていますか?これを実装する正しい方法は何ですか?

ありがとう。

0 投票する
0 に答える
139 参照

java - 静的 Fragment レイアウトでのトランザクション

次のようなフラグメント トランザクションを実行できます。

このレイアウトを持つアクティビティでは、次のようになります。

Fragment1次のように、通常のLinearLayoutand Fragment2tooが含まれている場所:

Fragment3次のように、もう一度2 番目のトランザクションを実行できます。

そして、うまくいくように見えますが、そうであってはならないことを私は知っています。このまま使うとアプリの安定性が危ないのでしょうか?なぜこのように機能するのか、どのように機能するのか、誰かがこのケースについて説明してくれませんか。

Fragmentを使用して追加/置換する必要があることはわかってFramelayoutいますが、私の場合、これを変更する時間がありません。

0 投票する
1 に答える
81 参照

android - アクティビティが再作成された後、フラグメント バックスタック内の 2 つの Android ViewPager が正しく表示されない

私の Android アプリにはアクティビティが 1 つしかなく、すべてのフラグメントが 1 つのフレームレイアウトで追加または置換されます。

問題は、フラグメント バックスタックに 2 つの異なるビューページャーがあり、アクティビティが再作成されたときに、2 番目のビューページャーが最初のビューページャーとして表示されることです。

以下は、フラグメントを発生順にバックスタックに追加する方法です。3 は、アクティビティが再作成された後に発生するフラグメントです。

  1. setupPlacesEventMainView()、これは FragmentStatePagerAdapter を使用するビューページャーです (アクティビティが再作成された後に適切に表示されます)
  2. setupPlaceDetailViewPager、これは FragmentStatePagerAdapter を使用するビューページャーです。(問題: PlacesEventMainViewPager が PlaceDetailViewPager の代わりにここに表示されます。この問題は、EventSpecials に移動しなくても発生します)
  3. setupEventSpecials()、これはリストフラグメントです。(アクティビティが再作成された後、適切に表示されます)

PlacesEventMainViewPager をバックスタックに追加する

バックスタックに PlaceDetailViewPager を追加

SpecialsList をバックスタックに追加する

フラグメントに含まれるもの。

  • PlacesEventMainViewPager には 3 つのリストフラグメントが含まれています。
  • PlaceDetailViewPager には 2 つのリストフラグメントが含まれています
  • SpecialsList は 1 つのリストフラグメントです。

PlacesEventMainViewPager フラグメント内の項目の 1 つをクリックすると、PlaceDetailViewPager フラグメントにアクセスできます。PlaceDetailViewPager フラグメントのボタンをクリックすると、SpecialsList にアクセスできます。

詳細が必要な場合はお知らせください。ありがとう!

0 投票する
1 に答える
107 参照

android - 上ボタンを押したときの適切なバックスタック ナビゲーション

onBackPressed() を使用して、MainActivity (多くのフラグメントがある) の [戻る] ボタンにバックスタック ナビゲーションを実装しました。上ボタンを押したときに同じバックスタック ナビゲーションを実装したい。問題は、1 つのフラグメントでのみ [上へ] ボタンが必要ですが、目的のフラグメントで [上へ] ボタンを押すと、すべてのフラグメントに [上へ] ボタンが表示されることです。setDisplayHomeAsEnabled(false) でさえ機能していません。1 つのフラグメントのみに [上へ] ボタンを表示するにはどうすればよいですか?

0 投票する
1 に答える
599 参照

android - AndroidでフラグメントバックスタックのOutOfMemoryの問題を修正するには?

私の Android アプリケーションには、リスト ビューとリスト アイテムの詳細ビューがあります。

リストビューと詳細ビューは、1 つのアクティビティ内のフラグメントです。最初にリスト フラグメントをアクティビティにロードし、ユーザーがリスト アイテムをクリックすると、同じビューが詳細フラグメントに置き換えられ、そのフラグメントが 1 つのアクティビティ内のバックスタックに追加されます

コード:

ユーザーが戻るボタンをクリックすると、リスト ビューになるので問題ありません。

だから私の問題は、ユーザーがリストアイテムアプリを数回(10回以上)クリックするとOutOfMemoryでクラッシュすることです

私が検索したところ、これはバックスタックの通常の動作であり、追加されたフラグメントがスタックからポップされたとしても、メモリから追加されたフラグメントがクリーンアップされないと言う人がいます。

ビジネス要件のため、これに 2 つのアクティビティを設定することはできません。

リストと詳細のフラグメントが同じアクティビティを持ち、バックスタックを使用してナビゲートするのが最善の方法ではないという私のアプローチではありませんか?

そうでない場合、私が従うべき最善の選択肢は何ですか?

0 投票する
0 に答える
256 参照

android - 構成の変更でフラグメント内のバックスタックを処理する方法は?

java.lang.IllegalStateException: onSaveInstanceState の後にこのアクションを実行できません

"。

Pls は、方向の変更後にバックスタック フラグメントを処理する適切な方法を説明してくれます。[注: フラグメント 3 から新しいフラグメント 5 にコミットしようとすると、クラッシュしました。]