問題タブ [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 に答える
299 参照

android - Android +フラグメントxmlでaddToBackStackを防ぎますか?

横向きモードでは 2 つのフラグメントがあり、縦向きモードでは 1 つのフラグメントがあります。上記のフラグメントをxmlメソッドを介してロードしています。とにかく、最初のアクティビティで 2 番目のフラグメントの存在を確認し、2 番目のフラグメントのアクティビティを起動するか、2 番目のフラグメントで直接メソッドを呼び出します。すべて正常に動作しますが、ユーザーが最初にローテーション (2 つのフラグメントを作成) してからローテーションを戻すと、2 番目のフラグメントのチェックが null ではなくなり、バックスタックに追加されたときにロジックが壊れます。

これを解決するには?おそらく onPause() の履歴スタックからフラグメントを削除する必要がありますか? または、2 番目のフラグメントが何らかの方法でバックスタックに追加されないようにすることもできます。

最初のアクティビティ:

SecondFragment:これをお勧めしますか?

0 投票する
3 に答える
1603 参照

android - フラグメントが画面上にあるときにリッスンする方法

私が必要とonResumeしているのは、特定のフラグメントの正確なメソッド (アクティビティで機能するため) です。フラグメント(フラグメントAとしましょう)をバックスタックに追加し、フラグメントAから別のフラグメント(フラグメントB)を開きます(再びバックスタックに追加します)。フラグメントBが閉じられ、フラグメントAが閉じられたときにツールバーを更新したい再び画面に。呼び出されることを期待onCreateViewしていますが、フラグメント B をポップしても呼び出されません。また、OnBackStackChangedListenerフラグメント A に を追加しようとしましたが、バックスタックが変更されたときにどのフラグメントが画面上にあるかを追跡できません。

したがって、私の質問は、onCreateViewフラグメント A に戻ったときに呼び出されるようにする方法です。これが適切な方法ではない場合、他にどのようにこのイベントを追跡できますか?

編集

このコードで新しいフラグメントを表示しています:

呼び出されるように何らかの方法で変更する必要がありonCreateViewますか? 既存のフラグメント A に新しいフラグメント Bを追加しているので(B が画面上にあるときにフラグメント A にあるボタンをクリックすることもできます)、フラグメント B をポップしても、フラグメント A の状況は何も変わりません。

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

android - 同じフラグメントが複数回スタックしないようにする ( addToBackStack)

Activity3 つの Fragments があり、それらをAB、およびCと呼びます。Fragment Aは Activity で呼び出されonCreate()ます。

また、特定のボタンが押されたときにフラグメントBまたはCに置き換えられ、FragmentTransaction が呼び出されますaddToBackStack()

Fragment しかし、私がBを 3 回続けて呼び出したとしましょう。同時に、これを可能にしたい: Bが呼び出された > Cが呼び出された > Bが呼び出された - しかし、戻ろうとすると、( B < C < B )の代わりにBを 1 回だけ ( C < B )開きたい. したがって、基本的には最初の backStack を新しいもので削除します。

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

android - バックスタックに同じフラグメントを 2 回追加しますか?

これが私の問題です。

私は基本的に、場所に関するいくつかの情報を含むフラグメントと、同じ都市内の他のすべての場所のリストを扱っています。リストの要素の 1 つをクリックすると、クリックした要素に関連する情報を含む同じフラグメントの別のインスタンスにアクセスできます。

問題は、同じ場所の情報を含むフラグメントが 2 つバックスタックに含まれていると、バックスタックが機能しなくなることです。

これは、新しいフラグメントを作成する方法です。

すべてのフラグメントが異なるデータを使用する場合、完全に機能します。ただし、バックスタックに存在するフラグメントで既に使用されているデータを使用してフラグメントをバックスタックに追加すると、[戻る] ボタンを押してアクセスしても表示されません。

この問題を解決するにはどうすればよいですか? フラグメントとその正確なコピーがバックスタックに存在するが、区別する必要がある場合、どうすれば管理できますか?

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

android - 互いに重なり合って透明なビューを表示する Android フラグメント

フラグメントコンテナレイアウトのアクティビティがあり、そのレイアウトでリストビューを持つフラグメントAをロードします(リストビューはWebからデータをロードします)。リストビュー項目をクリックすると、詳細ビ​​ューが表示されます。そのために、詳細フラグメントである別のフラグメント B をロードしています。今それを行うために最初に使用しました

しかし、置換を使用して、リストビューを含む前のフラグメント A を削除し、再度押し戻すと、フラグメント A の onCreateView メソッドとそのリストビュー データがリロードされます。バックプレスでフラグメントAを再度ロードする(またはWebサーバーに呼び出しを送信する)のを防ぎたい。フラグメント A の状態とそのリストビューのスクロール位置を維持したい。それを行うために、私は2番目のオプションを使用しました

add() を使用すると、フラグメント B がフラグメント A の上にロードされ、フラグメント A は引き続き表示されます。両方のフラグメントが重なり合って透明になっていることがわかります。また、show() および hide() メソッドを使用する別の解決策にも出会いました。しかし、それがそれを達成するための効率的な方法だとは思いません。誰でも効果的な解決策を提案できますか?

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

android - Android でバックスタックを管理する

現在、Android アプリの構造は

サイドメニューがあり、製品 1 に直接アクセスできるため、現在の試みはトランザクションごとにバックスタックに追加することであり、非常に奇妙な動作をしています。

私がこのように入ると:

フローは、ホームページに入った後、サイドメニューのproduct1をクリックし、product1ページに入った後、サイドメニューのabout usをクリックします

最初に戻るボタンを押すと、product1 に戻りますが、ホームに戻るはずです

戻るボタンを 2 回押すと、ホームに戻りますが、製品ページに移動する必要があります。

このような状況でバックスタックを処理するにはどうすればよいですか? 助けてくれてありがとう。