問題タブ [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 - 画面の回転をサポートしながら初期フラグメントを追加するにはどうすればよいですか?
アプリの起動時fragment1
に、バック スタックに追加されないトランザクションで、フラグメント インスタンス (たとえば、) をコンテンツ レイアウトに動的に追加します。newInstance(List<Obj>)
このフラグメントは、静的メソッドによって渡されたキャッシュ データを表示します。onSaveInstanceState()
フラグメントが再作成された場合に表示できるように、データを保存します。
ここで、フラグメントを再作成しないとします。たとえば、2 番目のフラグメントに置き換えてfragment2
(今回はトランザクションをバック スタックに追加します)、画面を 2 回回転させて、押し戻すとします。アプリはバック スタックをポップし、fragment1
再度表示を試みます。今度は表示List<Obj>
を試みます。その結果null
、 aNullPointerException
がスローされます。
fragment1
これは、インスタンスがバックスタックになく、デバイスが回転したときにどちらも表示されていなかったため、最初からインスタンスが保存されていないためだと理解しています。
私の質問は、この場合、画面の回転をサポートする最も適切な方法は何ですか? 最初のトランザクションをバック スタックに保存し、バック スタックをポップする前にonBackPressed()
確認することもできます (最初の画面であるため、最初のトランザクションをポップしたくありません) が、これは正しいアプローチではないと思います。何か案は?getSupportFragmentManager().getBackStackEntryCount() >= 1
fragment1
android - フラグメント onResume() と backStack の問題
別のフラグメントから戻ってきたときに、フラグメントを再開する状況で立ち往生しています。
シナリオ :
私は持っていFragment A
ます。今、フレーム レイアウトを使用して複数のフラグメントを in Fragment A
sayで開いています。A1, A2, A3 ...
Fragment B
現在、A1/A2/A3 のいずれかから新しい Fragment の発言を開始しています ...
私はいくつかのアクションを実行していますがFragment B
、ポップアウトFragment B
するとonResume()を取得できませんFragment A
から戻っている間に onResume() を取得する必要があるだけですFragment B
これについての助けが必要です!
高く評価!
ありがとう。
android - how to save listview items/adapter in fragment and restore from back stack
I've been tried to search about this problem but I couldn't get any solution. I've got a problem about saving ListView items in fragment. The case is I have several fragments
let say FRAGMENT A, FRAGMENT B and FRAGMENT C, and FRAGMENT A has a listview, the item of the listview can be changed when user scroll (just like timeline in social media apps). When I change the fragment A, I used addToBackStack(null) method.
The problem is, how to save the listview and restore its if back button is pressed?
#xA;onSaveInstanceState() is never called because the Activity host is never killed, only change the fragment using this:
here is my code trying to save and restore the listview:
#xA;here the code I've done so far :
#xA;I hope someone could help me out, thank you .
#xA;Updated Code This is my code so far, it works when I try to saved the listview items and its adapter, perhaps this is a bit tricky. If someone has any idea would be appreciated.
android - ナビゲーション ドロワーでのフラグメント バックスタックの処理
一見するとこれが重複しているように見える他の質問があることは知っていますが、私の場合、これらの回答はどれも機能しません。
私が望むのは、戻るボタンがどのように機能するかに関してメインアクティビティのように表示される最初のフラグメントです。戻るボタンが押されたときに最初のフラグメントに戻るには、ナビゲーションドロワーから選択したフラグメントが必要です。もう一度押してアプリを終了します。
そのため、addToBackStack を使用してみましたが、別のフラグメントに移動すると、戻るボタンを押すと最初のフラグメントに戻ります (希望どおり) が、もう一度戻るボタンを押すと白い画面が表示されます (これが原因かどうか疑問に思います)以下に含まれるトランザクション アニメーションの im を使用するので、これを回避するために、[戻る] ボタンをオーバーライドして、finish(); への呼び出しをスローしようとしました。しかし、これにより、最初のフラグメントに戻るのではなく、どのフラグメントが終了しても、上記のリンクや他の多くの回避策をいくつか試しましたが、適切な修正が見つかりませんか?
これが私のメインアクティビティdisplayViewです
私はそれを回避する素晴らしい方法のように見えるこれを見つけました
しかし、私はまだAndroidにかなり慣れていないので、INITIAL_POSITIONを何に設定すればよいかわからないので、試しました
しかし、運がなければ
android - バックスタックのすべてのフラグメントは、ローテーション後に onSaveInstanceState に null があります
デバイスをローテーションした後、バックスタックまたは fragmentSupportManager にあるフラグメントは、onSaveInstanceState をアクティブにします。
ただし、最初のローテーションの後、内部のすべてが null (すべての変数) になり、アプリは null ポインター例外でクラッシュします。
フラグメントが事実上何も破壊されない (すべての値が null) 場合、なぜフラグメントがまだ存在し、onSaveInstanceState が呼び出されているのか疑問に思っています。
私のコードは非常に深く、複数の基本クラスと、フラグメントから多くのコードを持ち上げるためのプレゼンター クラスがあります。また、Activity を 1 つだけ使用し、fragmentTransaction.replace を使用しています。
必要に応じてコードを追加できますが、たくさんあります。バックスタックが機能する/フラグメントを保持する方法について、明らかな何か、または理解できない何かがあることを願っています。
私が見たが役に立たなかったリンクは
バックスタックのフラグメントで onSaveInstanceState が呼び出されますか?
もう一度、フラグメントのインスタンス状態をバックスタックに正しく保存する方法は?
バックスタックのフラグメントで onSaveInstanceState を使用しますか?
バックスタック ローテーションでフラグメントが空白 バックスタック
にフラグメントの状態を保存
android - フラグメントのバックスタックを維持し、終了時に確認する
私は実際にはアクティビティではなくフラグメントに取り組んでいます。そのため、ナビゲーションドロワーアイテムをクリックすると、画面にさまざまなフラグメントが表示されます。コードに基づいて、アクティビティAからフラグメントbに移動している場合、フラグメントc、再びbに移動している場合、戻るボタンをクリックすると、MainActivity A に移動します。しかし、ここに問題があります。ページは開いていますが、バックスタックにフラグメントが残っていない場合にのみ表示したい.その問題について助けが必要です.
android - Fragment BackStack を適切にクリアするには?
すべての画面がフラグメントとして表示される単一のアクティビティを持つアプリがあります。
したがって、ほとんどの場合、フラグメントを変更するときは、バックスタックに追加します。したがって、BackStack は非常に大きくなる可能性があります。
私の質問は、フラグメントを置き換えたいが、BackStack をもう保持しない場合 (BackStack Reset) です。1 つのオプションは、root になるまで PopBackStack を実行して BackStack をクリアすることです (これは非常に非効率的で、他の問題が発生しています)。フラグメントを BackStack に追加せずに置換する
だからあなたは何をお勧めしますか?replace のみを使用する場合、メモリの問題はありますか?