Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全局布局后未发生Android片段事务_Android_Android Layout_Android Fragments - Fatal编程技术网

全局布局后未发生Android片段事务

全局布局后未发生Android片段事务,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我想有一个活动,可以在两个片段之间上下滑动,在它们之间的手柄上有一个按钮。为此,我有两个FrameLayout容器,一个在XML中声明,在线性布局中的权重为1,然后按钮在容器后面有一个固定高度,如下所示: 红色部分是第一个片段的容器。然后,我想通过编程在屏幕下方为片段2添加另一个片段容器,该容器的高度与测量的片段容器1的高度完全相同。因此,我使用: containerAdmin.getViewTreeObserver().addOnGlobalLayoutListener(new

我想有一个活动,可以在两个片段之间上下滑动,在它们之间的手柄上有一个按钮。为此,我有两个FrameLayout容器,一个在XML中声明,在线性布局中的权重为1,然后按钮在容器后面有一个固定高度,如下所示:

红色部分是第一个片段的容器。然后,我想通过编程在屏幕下方为片段2添加另一个片段容器,该容器的高度与测量的片段容器1的高度完全相同。因此,我使用:

    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();

交易后没有成功。有什么想法吗?让我知道我是否可以进一步阐述这个问题,或者您是否认为我应该采取不同的方法。

我已经设法暂时解决了这个问题,只需删除然后重新添加第一个容器。我真的很想知道为什么在我这样做之前片段不会进入那个容器。任何帮助都将不胜感激。