Я работаю над приложением, в котором у меня есть боковое меню. Когда каждый элемент кликается, фрагменты заменяются новыми.Замените фрагмент на Android, очистив существующий фрагмент
У меня есть метод для этой замены фрагментов. Но фрагменты перекрываются вместо замены. Старый фрагмент лежит в фоновом режиме, а новые - поверх старых.
Это мой метод замены фрагментов.
private void changeFragment(Fragment targetFragment){
resideMenu.clearIgnoredViewList();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
Как очистить старый фрагмент до размещения нового?
Edit:
private void changeFragment(Fragment targetFragment){
resideMenu.clearIgnoredViewList();
FragmentTransaction ft = (FragmentTransaction) getSupportFragmentManager().beginTransaction();
Fragment prev = (Fragment) getSupportFragmentManager().findFragmentByTag("fragment");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
ft.commit();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.addToBackStack(null)
.commit();
}
Это потому, что фон для фрагментов прозрачны, так что покажет вам, как перекрывающиеся фрагменты. Поэтому избегайте этого, вам нужно установить фоновый цвет или фоновое изображение для определенного фрагмента в вашем XML-файле. – Piyush
Не о цвете фона. У меня есть веб-просмотр, в котором есть несколько видеороликов youtube, которые воспроизводятся, даже если я изменяю фрагмент. Он играет в фоновом режиме, который противоречит правилам YouTube. Мне нужно как-то его очистить. – CuckooMarianne
Ваш код теперь удаляет фрагмент, а затем пытается заменить фрагмент. Я думаю, что второй op должен быть .new not .replace. –