getChildFragmentManager> beginTransaction> replace> commit:no result

  发布于 2023-02-12 15:40

我主要活动只有ViewPager.第一个标签页片段包含:




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

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();'之后 什么都没发生.没有错误,没有结果.只是列表视图仍然显示和工作.

我究竟做错了什么?我找到了一些例子,我的代码看起来一样,但没有用,我对此无能为力.

谢谢!

1 个回答
  • 当你做一个replace或者add,它所要做的就是将Fragment视图添加到你指定的容器中.唯一的区别是:

    replace将删除先前容器内的第一个现有Fragment that is handled by the FragmentManager specified.

    add 只需将Fragment添加到容器中即可.

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

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

    2023-02-12 15:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有