Я работаю с Фрагментами впервые и сталкиваюсь со странным поведением. У меня есть действие с фрагментом, охватывающим весь вид. Он содержит ListView. Когда я нажимаю на элемент в ListView, я хочу показать фрагмент сведений, который содержит информацию об этом элементе.
Вот как я представляю новый фрагмент:
FragmentManager fragmentManager = this.getActivity().getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
DetailsFragment fragment = new DetailsFragment();
transaction.add(R.id.viewRoot, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack("Details").commit();
R.id.viewRoot - это идентификатор корневого макета в XML-макете первого фрагмента, поэтому новый фрагмент заполняет весь экран.
Моя проблема: когда новый фрагмент виден и покрывает весь экран, любые щелчки или нажатия, которые попадают на фон (т.е. не нажимая кнопку или текстовое поле на новом фрагменте), по-видимому, проходят через вид и приземляются на первый фрагмент. Итак, я нажимаю на элемент ListView, что приводит к добавлению DetailsFragment на экран. Затем, когда я нажимаю на фон DetailsFragment, этот каскад проваливается и попадает в ListView, вызывая добавление другого DetailsFragment для любого элемента, который случайно попал за кулисы.
Я неправильно добавляю свой новый фрагмент? Почему мои клики / нажатия проваливаются?
РЕДАКТИРОВАТЬ для caiuspb:
public class BaseFragment extends Fragment {
public void pushNewFragment(Fragment fragment, String description) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.remove(this);
transaction.add(R.id.viewRoot, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack(description).commit();
}
}
Все мои фрагменты расширяют мой класс BaseFragment.