Я пытаюсь заменить фрагмент в моем основном макете.
В моем основном макете у меня есть:
<fragment
android:id="@+id/frame_informations"
android:name="GridFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="2dp"
android:layout_marginEnd="2dp"
app:layout_constraintBottom_toTopOf="@+id/main_bottom_menu"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/llLit"/>
Когда я хочу заменить этот фрагмент, я использую:
public void switchFrameInformations(Fragment newFragment) {
try {
FragmentTransaction ft = fm.beginTransaction();
// ft.setCustomAnimations(android.R.anim., android.R.anim.fade_out);
if (fm.findFragmentById(R.id.frame_informations) == null) {
ft.add(R.id.frame_informations, newFragment);
} else {
ft.replace(R.id.frame_informations, newFragment);
}
// ft.addToBackStack(null);
ft.commit();
fm.findFragmentById(R.id.frame_informations).getView().requestLayout();
} catch (Exception e) {
e.printStackTrace();
}
}
fm - менеджер фрагментов ...
Это работает, но происходит нечто странное: новый фрагмент содержит список имен, а фон прозрачный.В конце замены я вижу старый фрагмент на фоне нового ...
В консоли отладки я вижу, что все методы обычно называются: onDestroy и т. Д ...для старого фрагмента.Я догадался, что имя в описании XML может вызвать проблемы:
android:name="GridFragment"
Но я не могу скомпилировать, если нет имени ...
Насколько я думаю, этоРаспространенная проблема, я пытался найти решение в Интернете, но не смог найти никакого решения.
Спасибо за вашу помощь.