与隐藏片段交互 - Android

时间:2016-06-17 09:38:12

标签: android android-fragments fragmenttransaction fragmentmanager

我正在向我的活动添加片段,我首先隐藏当前片段然后添加新片段。我的问题是,当我展示我的新片段并开始与他交互时,它也会与之前的片段进行交互。

我用来添加新的和隐藏当前片段的代码是:

public void add(int containerViewId, Fragment fragment, boolean addToBackStack){
    FragmentTransaction ft = fragmentManager.beginTransaction().hide(currentFragment).add(containerViewId, fragment);
    if (addToBackStack){
        ft.addToBackStack(null);
    }
    ft.commit();
    currentFragment = fragment;
    backStackCount++;
}

发生了什么,以及如何隐藏片段以便我只能与添加的最后一个进行交互? replace不是一个选项,因为我不想删除当前的片段。

1 个答案:

答案 0 :(得分:2)

我也有类似的问题。我不知道可能是什么造成了这个问题但我解决的问题是我设置了一个onclick监听器到我片段的最外层布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/top_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:clickable="false"
android:orientation="vertical"
tools:context=".Fragments.TopicsFragment">

...other components
</LinearLayout>

片段:

LinearLayout topLayout = (LinearLayout) fragmentView.findViewById(R.id.top_layout);
topLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //do nothing 
        }
    });

另外你可能会看到我在这个最外层的布局中添加了背景#FFFFFF,因为在mycase中,前一个片段的内容在新的片段后面也是可见的。所以这也解决了这个问题。