全局布局后未发生Android片段事务
我想有一个活动,可以在两个片段之间上下滑动,在它们之间的手柄上有一个按钮。为此,我有两个FrameLayout容器,一个在XML中声明,在线性布局中的权重为1,然后按钮在容器后面有一个固定高度,如下所示: 红色部分是第一个片段的容器。然后,我想通过编程在屏幕下方为片段2添加另一个片段容器,该容器的高度与测量的片段容器1的高度完全相同。因此,我使用:全局布局后未发生Android片段事务,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我想有一个活动,可以在两个片段之间上下滑动,在它们之间的手柄上有一个按钮。为此,我有两个FrameLayout容器,一个在XML中声明,在线性布局中的权重为1,然后按钮在容器后面有一个固定高度,如下所示: 红色部分是第一个片段的容器。然后,我想通过编程在屏幕下方为片段2添加另一个片段容器,该容器的高度与测量的片段容器1的高度完全相同。因此,我使用: containerAdmin.getViewTreeObserver().addOnGlobalLayoutListener(new
containerAdmin.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
fragmentHeight = containerAdmin.getHeight();
instantiateFragments();
}
});
这很好,然后我捕获活动的触摸事件,并在触摸事件上移动所有容器的y值,以便用户可以向上滚动这些容器,如图所示:
这很好地工作,正如您所看到的,显示了片段2的蓝色容器,它的高度正确。现在我有了两个大小正确且放置正确的容器(FrameLayout),我使用FragmentTransaction添加了片段,如下所示:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.admin_container, new AdminFragment());
transaction.add(R.id.client_container, new ClientFragment());
transaction.commit();
令我惊讶的是,第二个FrameLayout容器成功地获得了预期的片段,但是第一个容器(我在全局布局上使用的容器)并不存在。我甚至从ADM中提取了一个XMLUI规范并检查了UI层次结构,第一个片段“AdminFragment”根本不存在,但“ClientFragment”被正确呈现。我已为容器上色,以确保它们实际上正确充气且可见。我甚至试着打电话
getFragmentManager().executePendingTransactions();
交易后没有成功。有什么想法吗?让我知道我是否可以进一步阐述这个问题,或者您是否认为我应该采取不同的方法。我已经设法暂时解决了这个问题,只需删除然后重新添加第一个容器。我真的很想知道为什么在我这样做之前片段不会进入那个容器。任何帮助都将不胜感激。