web-dev-qa-db-ja.com

addToBackStackとフラグメントトランザクションでの置き換えは問題ありませんか?

次のコードについて何か考えはありますか?私のテストでは、置き換えられたフラグメントは破棄されておらず、バックスタックをポップしてもインスタンスはまだ残っています。これがフラグメントトランザクションを使用する有効な方法であることを確認するためだけに探しています。

getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(frame, fragmentB).commit();

Replaceを使用する理由は、置換されたフラグメントが終了アニメーションを実行するためです。

17
bgolson

Androidデザイナーガイドを参照してください: http://developer.Android.com/guide/components/fragments.html

具体的には、以下のスニペット:

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

だから、はい、あなたがしていることはフラグメントを置き換える際の正しいアプローチです。

24
Jason Hu