問題タブ [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.
android - フラグメント バックスタックでループを作成しないようにする方法
以下のようなフラグメント間を移動しようとしています:
ユーザーは次のFragment D --> Fragment A
ように再びナビゲートできます。
この場合、バックプレス キーでループが作成されます。このタイプの状況を管理して、バックプレスでのフラグメントのループを回避する方法。
view - 不正な引数例外、クラス フラグメントのビューが見つかりません
こんにちは、メイン アクティビティに Menu Drawer があり、2 つの Fragment があります。最初の Fragment にはタブ バーが含まれており、2 番目の Fragment はシンプルです。2 番目のフラグメント 単純なフラグメント。
私が2番目のフラグメントにいて、バックスタックのバックプレスボタンにいるとき、その時点で最後のフラグメントをポップすると、不正な引数の例外というエラーが発生します。
ここにメインクラス(メニュードロワー)があります:
これが私のフラグメントクラス1です。
}
ここに2番目のフラグメントクラスがあります:
タブバーが空白のページまたはリストビューを表示して2番目のフラグメントから最初のフラグメントに戻るときのログ猫は次のとおりです。2番目のタブを移動しようとすると、不正な引数例外の問題が発生します
ここに私のログがあります:
このリンクは、バックスタックがどのように機能するかを示しています
android - Nexus 6 デバイスとエミュレータの間で異なるバックスタック動作
私は、ウィジェットをサポートFragment
し、選択の詳細を表示するためにユーザーを送信する検索結果を表示するアプリに取り組んでいます。これらはすべて正常に動作しますが、バックスタックに関して、Nexus 6 エミュレーターと実際のデバイスの間で一貫性のない動作が見られます。エミュレーターでは、FragmentActivity の詳細で [戻る] ボタンを押すと、ユーザーが検索結果フラグメントに戻され、すべてが期待どおりに機能します。実際の Nexus 6 デバイスでは、ユーザーはアプリのメニューを含む に戻ります (このアクティビティは、管理するフラグメントをバックスタックに追加する support を使用します)。SearchView
RecyclerView
FragmentActivity
AppCompatActivity
FragmentManager
Fragment から FragmentActivity にユーザーを送信するコードは、エクストラを含むインテントです。
私はバックスタックで特別なことをしていません (まだ) - これはデフォルトの動作です。
ここで何が問題になる可能性がありますか? バックスタックでいくつかの読み取りを行いましたが、FragmentActivy から FragmentManager を使用していない Fragment に戻るときに、手動でバックスタックに何かを追加することについてはまだ何も見ていません。
編集 1:frame_menu_container
が定義されているレイアウト XML は次のとおりです。
編集 2: OK、これが私の高レベルのアクティビティとフラグメントのテキストによる説明です。
NavigationMenuActivity
、拡張しAppCompatActivity
ます。これは、すべてのフラグメントが必要に応じてスワップ インおよびスワップ アウトされる場所であり、メソッドSupportFragmentManager
が使用される場所です。replaceFragment()
次のフラグメントがあります。これらはすべて、静的情報を表示するか、REST 呼び出しを行ってデータを取得および表示するか、ユーザーがフィードバックを送信できるようにします。すべて extendsandroid.support.v4.app.Fragment
であり、ユーザーが移動できる他のフラグメントやアクティビティはありません。
- ホームフラグメント
- カレンダーフラグメント
- 順位フラグメント
- PlayerSearchFragment (下記参照)
- フラグメントについて
- フィードバックフラグメント
これらのフラグメントの機能の唯一の例外は、PlayerSearchFragment
も拡張するandroid.support.v4.app.Fragment
です。このフラグメントには、RecyclerView
ユーザーがプレーヤーを検索するときに REST 呼び出しの結果を表示する が含まれています。結果が返され、ユーザーがリストから項目を選択すると、結果はPlayerDetailsActivity
which extendsに送信されますFragmentActivity
。
はPlayerDetailsActivity
、FragmentTabHost
表示可能なプレーヤーに関するさまざまなタイプの情報を含むビューを使用します。これは、このパスの「終点」です。ユーザーが移動できる他のフラグメントやアクティビティはありません。ここが問題です。このアクティビティで [戻る] ボタンを押すと、ユーザーがPlayerSearchFragment
フラグメント (検索結果) に戻るようにすることが意図されています。NavigationMenuActivity
実際の Nexus 6デバイスを使用している場合は、アクティビティに戻ります。
PlayerDetailsActivity
戻るボタンが押されたときに呼び出される次のメソッドがありますが、常にゼロのエントリが表示されます。
ハードウェアであろうとエミュレータであろうと、すべてのデバイスで同じエクスペリエンスが得られることを願っています。
android - Android バックスタックの問題
BackStack で発生した問題を解決するのに苦労しています。アクティビティによって管理される 3 つのフラグメントがあります。
このコードを使用したフラグメント間のナビゲーション:
ユーザーが他の 2 つのフラグメントから戻るボタンを使用して FinalizeFrag に戻れるようにしたいと考えています。これは現在のコードで動作しますが、1 つのフローでは問題があります。
- ユーザーは新しい「子」を ChildSpecificationFrag に保存します (ツールバーの保存アイコン)。
- ユーザーが ChildrenOverviewFrag にリダイレクトされる
- ユーザーが戻るボタンを押す
- ChildrenOverviewFrag にとどまります (FinalizeFrag にリダイレクトする必要があります)
注: ボタンをもう一度押すと、FinalizeFrag にリダイレクトされます
閉じるボタンクリック時のコード(ChildSpecificationFragment):
保存ボタンクリック時のコード(ChildSpecificationFragment):
ご覧のとおり、BackStack から Fragment を削除しています。私は何を間違っていますか?前もって感謝します!
android - 奇妙なフラグメントのバックスタック動作
activity
sに基づく1 つのすべてのナビゲーションを備えたアプリに直面しましたFragment
。次のステップを含む場所が 1 つあります。
fragment1 はコンテナー id1 で置き換えられました。add
同じ id1 コンテナーに fragment2 を追加するために使用します。replace
同じid1コンテナにfragment3を追加するために使用した後。
無防備な取引3件です。すべてバックスタックに追加されます。しかし、最後に戻ると、フラグメント2は表示されず、コンテナid1にfragmtent1のみが表示されますが、フラグメント2はバックスタックにあります。次に戻るボタンを押しても効果がないため、フラグメント1はまだ表示されています。次に戻るボタンを押した後、フラグメント1は削除されますコンテナから。
最初に戻るボタンを押した後、fragment2 はそのビューを作成しないように見えるため、彼はコンテナーに消えています。
置換に使用したコードの一部があります。
追加する場合:
何か案は?ありがとう。
android - フラグメント バック スタックの一番上にあるアイテムだけを別のフラグメントに置き換える方法は?
実行するgetSupportFragmentManager().popBackStack();
と、バック スタックがポップされ、ポップされたバック スタック エントリに関連付けられたフラグメント トランザクションが実行されます。
私は3つのフラグメントを持っています:
- FragmentA
- FragmentB
- FragmentC
ユーザーがプロモートすると、私のアクティビティは 3 つのトランザクションを実行します。
- フラグメント A が最初にコンテナーに追加されます。
- 次に、FragmentA がデタッチされ、FragmentB が追加されます。そして、トランザクションがバックスタックに追加されます。
- 次に、FragmentC が fragmentB のみを置き換え、バック スタック エントリを変更して、ユーザーが戻るボタンを押したときに FragmentA が表示されるようにする必要があります。
トランザクション 3 を実行するコードは次のとおりです。
トランザクション 1 と 2 は正常に動作しているようです。ただし、トランザクション 3 を実行しようとすると、FragmentB が FragmentC に置き換えられますが、FragmentC が描画される直前に Fragment A も表示され、FragmentA は FragmentC の背後に表示され続けます。
私は何を間違っていますか?FragmentA をバックグラウンドで公開せずに FragmentB を FragmentC に置き換えるにはどうすればよいですか。
android - バックスタックの savedInstanceState の動作をシミュレートする
アプリがバックスタックに長時間放置されたときのアプリの状態をテストしたいと考えています。
20 個のアプリを次々に開くと、最後に使用したアプリ (テストしているアプリ) が最終的に終了し、savedInstanceState が発生します。アプリをバックスタックに埋めるために、さらに 20 個のアプリを開くことなく、テスト中のアプリのこの動作をシミュレートする方法はありますか?