我正在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);
这样做会导致 null
的 myFragment,总是如此。
当我尝试使用标签而不是 ID 时,可以轻松地通过其标签检索片段,没有任何问题:
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment, "testfragment");
fragmentTransaction.commit();
抱歉,我无法提供您所要求的服务。MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("testfragment");
为什么 findFragmentById 找不到 fragment,但是 findFragmentByTag 可以找到?我有什么遗漏吗?
(MyFragment) getFragmentManager().findFragmentById(R.id.container);
。 - offset