Vip*_*per 56 android android-fragments
我在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是这样做的?我错过了什么吗?
StE*_*rMi 42
R.id.test_fragment 不是您的片段的ID,而是LinearLayout的ID
调用add(int containerViewId, Fragment fragment)将添加没有标记的片段.所以,或者您使用add(int containerViewId, Fragment fragment, String tag)并使用标签取回片段(作为ID)
小智 10
将<FrameLayout>标记用作布局文件中的容器.稍后,要动态替换活动中的片段,可以使用<FrameLayout>容器的ID 替换活动中的片段.
<FrameLayout
android:id="@+id/test_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58295 次 |
| 最近记录: |