it-swarm.com.ru

Предыдущий фрагмент виден под новым фрагментом

У меня есть вкладка + макет ViewPager, и на одной из этих вкладок у меня есть представление списка. Когда я заменяю этот фрагмент списка при нажатии, я все еще вижу старый фрагмент под новым фрагментом. Увидеть:

enter image description here

Код:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
HallsInStateFragment hallsForState = new HallsInStateFragment();        
transaction.replace(R.id.container, hallsForState);
transaction.addToBackStack(null);
transaction.commit();

где R.id.container - это FrameLayout в представлении.

20
SquiresSquire

Вместо R.id.container укажите идентификатор фрагмента следующим образом: ((ViewGroup)getView().getParent()).getId(). На самом деле это не замена фрагмента, а предыдущий макет, т.е. FrameLayout. Это работает для меня, и я надеюсь, что это будет работать и в вашем случае.

7
varun bhardwaj

когда нужно удалить все представления из родительского представления, вам нужно вызвать removeAllViews () в контейнере в вашем onCreateView () метод вашего фрагмента.

Вот код:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

container.removeAllViews(); // Inflate the layout for this fragment
 return inflater.inflate(R.layout.fragment_example, container, false); 
}
3
taranjeetsapra

Пользовательский интерфейс фрагмента является частью иерархии представления активности. Таким образом, если вы создали свои представления в методе onCreateView (), то вы раздуваете свой макет, используя контейнер ViewGroup. Этот контейнер хранит ссылки на ваши фрагменты. Попробуйте переопределить метод onDestroyView () вашего фрагмента и удалить все представления из родительского:

@Override
public void onDestroyView() {
    //mContainer.removeAllViews();
    ViewGroup mContainer = (ViewGroup) getActivity().findViewById(R.id.container);
    mContainer.removeAllViews();
    super.onDestroyView();
}
2
Marcin S.

В корневом представлении добавьте clickable = true и добавьте цвет фона (как в xml) фрагмента, заменяя текущий фрагмент . Это просто исправление для обходного пути 

0
aradhyamathur