xml レイアウトでフラグメントの ID を定義しています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_fragment"
...
次に、このフラグメントをアクティビティの onCreate メソッドに追加します。
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment);
fragmentTransaction.commit();
これはすべて正常に機能しています。フラグメントの交換も機能しています。
後で、アクティビティのメソッドの 1 つで、ID でこのフラグメントを取得しようとしています。
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentById(R.id.test_fragment);
そうすることで、 myFragment が になりnull
ます。いつも。
ID の代わりにタグで同じことをしようとすると、問題なくタグでフラグメントを取得できます。
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment, "testfragment");
fragmentTransaction.commit();
...
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("testfragment");
findFragmentById ではフラグメントを見つけられないのに、findFragmentByTag では見つけられるのはなぜですか? 何か不足していますか?