我主要活动只有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();'之后 什么都没发生.没有错误,没有结果.只是列表视图仍然显示和工作.
我究竟做错了什么?我找到了一些例子,我的代码看起来一样,但没有用,我对此无能为力.
谢谢!
当你做一个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上.