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

Спасибо за ответ. Я уже пробовал это, и он работает, но это кажется «хакерским». Я ищу причину, почему это происходит. – Aleksandar

Смежные вопросы