我在xml布局中为我的片段定义了一个ID:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_fragment"
...
Run Code Online (Sandbox Code Playgroud)
然后我在activity的onCreate方法中添加这个片段:
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
这一切都很好.替换片段并且也在工作.
后来我试图通过其中一个活动的方法中的ID来检索这个片段:
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentById(R.id.test_fragment);
Run Code Online (Sandbox Code Playgroud)
这样做会导致myFragment成为现实null.总是.
当我尝试使用标签而不是ID时,我可以通过其标签检索片段而不会出现任何问题:
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment, "testfragment");
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
...
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("testfragment");
Run Code Online (Sandbox Code Playgroud)
为什么findFragmentById找不到片段,但findFragmentByTag是这样做的?我错过了什么吗?