0

我以我首先隱藏當前片段並添加新片段的方式將碎片添加到我的活動中。我的問題是,當我顯示我的新片段並開始與他進行交互時,它也會與之前的交互。與隱藏片段交互 - Android

,我用它來添加新的和隱藏當前片段的代碼是:

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不是一個選項,因爲我不想刪除當前片段。

回答

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的含量也落後於新的一個可見。所以這也解決了這個問題。

+0

感謝您的回答。我已經試過這個,它可以工作,但這似乎是'hackish'。我正在尋找這種情況發生的原因。 – Aleksandar