android - getChildFragmentManager > beginTransaction > 替换 > 提交 : no result

标签 android android-fragments android-viewpager

我有主要 Activity ,上面只有 ViewPager。第一个标签页 fragment 包含:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llEventsTabPage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
    android:id="@+id/lvEvents"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</LinearLayout>

我想在用户点击 ListView 中的项目时显示详细信息 fragment :

lvEvents.setAdapter(adapter);
lvEvents.setOnItemClickListener(
            new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {                     
                    Fragment eventFragment = new EventFragment();
                    FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();

                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.replace(R.id.llEventsTabPage, eventFragment);
                    fragmentTransaction.commit();
                }
            }
        );

代码 'fragmentTransaction.commit();'被调用时,会调用 EventFragment 的 onCreateView,但是在“fragmentTransaction.commit();”之后什么都没发生。没有错误,没有结果。只有 ListView 仍在显示和工作。

我做错了什么?我找到了一些示例,我的代码看起来一样,但无法正常工作,我对此无能为力。

谢谢!

最佳答案

当您执行replaceadd 时,它要做的就是将Fragment 的View 添加到您指定的容器中.唯一的区别是:

replace 将移除容器内第一个现有的 fragment ,该 fragment 先前由指定的 FragmentManager 处理

add 只会将 Fragment 添加到容器中。

在您的例子中,您有一个 LinearLayout 容器,其中包含一个大小为 match_parent 的 ListView。这意味着,当 ChildFragmentManager 将您的 Fragment 添加到容器时,它会将其添加到 LinearLayout。该 fragment 实际上位于 View 范围之外的 ListView 下方。

将 LinearLayout 更改为 FrameLayout,您的 Fragment 将显示在 ListView 上。

关于android - getChildFragmentManager > beginTransaction > 替换 > 提交 : no result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414017/

相关文章:

android - 如何在 FragmentStatePagerAdapter 的 fragment 中动态设置 TextView 的文本

java - 无法实例化 Activity ComponentInfo; java.lang.NullPointerException

Android 使用 ListView 查看分页器并动态添加文本

具有兼容库的 Android Fragments

android - 附加/分离与替换 fragment

android - 使用 View 寻呼机滑动 4 个图像非常慢

android - 从属于 ViewPager 的 fragment 创建新 fragment

android - Nexus 5 USB 驱动程序

android - 左对齐文本,右对齐复选框

java - Intent.putExtra() 不更新其值