リターンスタックpopBackStack()のAndroidフラグメント、リターンonResumeの問題
2022-02-14 09:19:30
Fragmentを使用する場合、リターンスタックにフラグメントを追加することがある
mgrFragment.beginTransaction().add(R.id.fl_home, frgNearby).addToBackStack(null).commitAllowingStateLoss();
しかし、フラグメントのonResumeで何かをする必要があるとき、元のフラグメントへの復帰はonResumeメソッドを取らないことに気づきます。これは、popBackStack()がスタック上に既に存在するフラグメントに状態を復元しているためです。
では、後続のフラグメントの状態が復元されたときに、後続のフラグメントのonResumeでデータを更新したい場合はどうすればいいのでしょうか。
実は、アクティビティで必要なフラグメントのリターンをリッスンすることができるのです。FragmentManagerのOnBackStackChangedListenerを使用します。詳細はコードをご覧ください。
FragmentManager mgrFragment = getSupportFragmentManager();
mgrFragment.addOnBackStackChangedListener(getListener());
mgrFragment.beginTransaction().add(R.id.fl_home, frgNearby).addToBackStack(null).commitAllowingStateLoss();
----------
private FragmentManager.OnBackStackChangedListener getListener() {
FragmentManager.OnBackStackChangedListener result = new FragmentManager.OnBackStackChangedListener() {
public void onBackStackChanged() {
FragmentManager manager = getSupportFragmentManager();
if (manager ! = null) {
Fragment currFrag = (Fragment) manager.findFragmentById(R.id.fl_home);
currFrag.onResume();
}
}
};
return result;
}
これで終わりです。私たちのフラグメントonResumeは、私たちが戻ったときに再び行くことがわかります。
関連
-
Android プロジェクトのライブラリに armeabi-v7a、armeabi、x86 が追加されました。
-
Androidでコンストラクタのインテントを解決できない原因と解決策
-
Android RecyclerViewで「アダプターが接続されていません」と表示され、問題解析がスキップされる。
-
Android Studioの解決策:xxxは囲むクラスではありませんエラー
-
selectionに主な型が含まれていないエラー
-
Android LayoutInflaterの原則の分析は、ビュー(a)のステップの深い理解によってあなたのステップを取る
-
Androidのレイアウトにおけるmarginとpaddingの違いについて
-
Androidの内部育成に磨きをかける2年間
-
Android統計チャート MPAndroidChart
-
Android 問題その9:AVD フォルダにコピーする ABI armeabi 用の 'userdata.img' ファイルが見つからない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AndroidStudioのエラーAAPT2エラーの解決:詳細のログを確認する
-
第20章 OnCheckedChangeListenerイベント (ゼロから学ぶAndroid)
-
Android 問題集 第42回:INSTALL_FAILED_OLDER_SDK
-
Android eclipseが起動できない:選択項目を起動できず、最近起動した項目もない
-
My Android Notes (XI) - 環境設定を使って設定を保存する
-
MyEclipseの起動時に以下のようなエラーが発生したため、ログファイルを参照してください。
-
Androidのellipsizeプロパティ(余分なテキストは楕円で表示される)
-
アンドロイドバージョン一覧
-
Android デフォルトのホームアプリケーション(Launcher)起動プロセスのソースコード解析
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1 Sinkhole!