Я знаю, что есть несколько ответов для этой конкретной проблемы, однако ни один из них не помог мне решить эту проблему.Неверный фрагмент отображается при изменении ориентации
Я работаю над приложением, которое имеет навигацию на ящике (навигационная панель Майка Пенза). Выбирая любой из элементов, пользователь переходит к соответствующему фрагменту. Фрагменты прекрасно работают и сохраняют свое состояние при изменении ориентации. Однако у одного из фрагментов есть кнопка, которая заменяет текущий фрагмент новой. Когда новый фрагмент находится на экране, и если пользователь меняет ориентацию устройства, отображается предыдущий фрагмент.
Процесс: Выдвижные Пункт Select> Фрагмент A> Кнопка> Фрагмент B> Изменить ориентацию> Фрагмент А.
Edit: Это как первый фрагмент называется: (переключатель)
case R.string.drawer_item_a:
FragmentA A = FragmentA.newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, A)
.commit();
break;
Это как второй фрагмент называется:
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentB B = FragmentB.newInstance();
fm.beginTransaction()
.replace(R.id.container, B, String.valueOf(R.string.settings_pin_request))
.commit();
}
Выдвижные
result = new Drawer()
.withActivity(this)
.withToolbar(mToolbar)
.withActionBarDrawerToggle(true)
.addDrawerItems(
new PrimaryDrawerItem().withName("FragmentA"),
new PrimaryDrawerItem().withName("FragmentB")
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
if (drawerItem instanceof Nameable) {
mCurrentDrawerItem = position;
// Display appropriate fragment
switch (((Nameable) drawerItem).getNameRes()) {
case R.string.drawer_item_a:
FragmentA A = FragmentA.newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, A)
.commit();
break;
case R.string.drawer_item_b:
FragmentA A = FragmentA.newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, A)
.commit();
break;
}
mToolbar.setTitle(MainActivity.this.getString(((Nameable) drawerItem).getNameRes()));
}
}
}).build();
// Set the current drawer item
result.setSelection(mCurrentDrawerItem);
Метод onResume() реализует логику для синхронизации пользователя. Для состояний фрагментов ничего не написано.
сообщении код, как у вызвать различный фрагмент, чтобы поместить его в макет рамки при изменении ориентации. – DJphy
@DJphy Проверьте изменение. – Superiom
Показать код ящика.Также покажите onResume «MainActivity». – luiscosta