私は、setRetainInstance(true)を持つフラグメントを持っていて、最初の起動後にフラグメントを見つけようとしています。2回目のタグでフラグメントを見つけることができません。
private void showHomeFragment() {
mHomeFragment = (HomeFragment) getSupportFragmentManager().findFragmentByTag(HomeFragment.class.getSimpleName());
if (mHomeFragment == null) {
mHomeFragment = new HomeFragment();
}
showFragment(mHomeFragment, false);
}
@Override
public void showFragment(Fragment fragment, boolean addToBackStack) {
@SuppressLint("CommitTransaction") FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_container,
fragment,
fragment.getClass().getSimpleName());
if (addToBackStack) {
transaction.addToBackStack(fragment.getClass().getSimpleName());
}
transaction.commit();
getSupportFragmentManager().executePendingTransactions();
}
私はこのHomeFragmentをHomeFragmentに戻って別のフラグメントに移動し、タグで見つけることができません。問題が何であるか把握するのに助けてくれる人がいますか?
ありがとうございます!
戻るボタンを押すのと同じプログラムである 'getSupportFragmentManager.popBackStack()'を使って 'HomeFragment'に戻ることができます。 –
@krislarsonしかし、フラグメントがインスタンスをtrueに保持しているのであれば、タグで見つけることができないのはなぜですか? –