1. ホーム
  2. アンドロイド

[解決済み】フラグメントを使用してバックスタックをクリアする

2022-04-04 21:16:01

質問

Androidアプリをhoneycombに移植し、フラグメントを使用するために大きなリファクタリングを行いました。以前のバージョンでは、ホームボタンを押すときに ACTIVITY_CLEAR_TOP バックスタックをリセットするためです。

現在、私のアプリは複数のフラグメントからなる1つのActivityに過ぎないので、ホームボタンを押すと、その中のフラグメントの1つを置き換えるだけです。バックスタックをクリアするために startActivity と共に ACTIVITY_CLEAR_TOP のフラグ?

解決方法は?

似たようなことをここに書きました

ヨアヒムさんの回答から、ダイアン・ハックボーンさんより。

http://groups.google.com/group/android-developers/browse_thread/thread/d2a5c203dad6ec42

結局、使うだけになってしまいました。

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {    
    fm.popBackStack();
}

しかし、同様に次のようなものを使うこともできた。

((AppCompatActivity)getContext()).getSupportFragmentManager().popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)

これにより、指定されたものまでのすべてのステートがポップアップします。そして、このフラグメントを好きなものに置き換えることができます。