我在 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();
这一切都很好。更换碎片,也正在工作。
稍后,我尝试在活动的一种方法中通过其 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 却找到了?我错过了什么吗?