相关疑难解决方法(0)

findFragmentById始终返回null

我在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是这样做的?我错过了什么吗?

android android-fragments

56
推荐指数
2
解决办法
6万
查看次数

标签 统计

android ×1

android-fragments ×1