#java #android #android-fragments
#java #Android #android-фрагменты
Вопрос:
У меня есть пара фрагментов, которые поддерживаются activity. Приложение запускается с «домашнего» фрагмента, и когда я перехожу к «Фрагменту A», а затем перехожу к действию «Настройки» и нажимаю «Назад» из действия «Настройки», «Фрагмент A» заменяется фрагментом «Home». Как мне сохранить состояние «Фрагмента A» и сохранить ящик открытым при возврате из действия «Настройки»?
Для пояснения я хочу вернуться к фрагменту, с которого я запустил activity, в данном случае к activity settings, а не возвращаться к «домашнему» фрагменту. Любая помощь будет оценена, спасибо!
Вот мой код для ящика:
if (id == R.id.fragOne) {
fragment1 = new FragmentOne();
android.support.v4.app.FragmentManager fragmentManager1 = getSupportFragmentManager();
fragmentManager1.beginTransaction()
.replace(R.id.container, fragment1, "frag1")
.commit();
} else if (id == R.id.fragTwo) {
fragment6 = new fragmentTwo();
android.support.v4.app.FragmentManager fragmentManager2 = getSupportFragmentManager();
fragmentManager2.beginTransaction()
.replace(R.id.container, fragment2, "frag2")
.commit();
} else if(id == R.id.helpDrawer){
Intent drawerHelp = new Intent(MainActivity.this, Help.class);
startActivity(drawerHelp);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer != null) {
drawer.closeDrawer(GravityCompat.START);
}
return true;
Комментарии:
1. Как вы возвращаетесь к фрагменту из Activity?
2. Я нажимаю кнопку «Назад» из activity, чтобы вернуться к фрагменту. В моем основном действии я переопределяю кнопку «Назад», чтобы проверить, открыт ли ящик, например. @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer != null) { if (drawer.isDrawerOpen(GravityCompat. НАЧАТЬ)) { drawer.closeDrawer(GravityCompat. НАЧАТЬ); } else { super.onBackPressed(); } } }
3. Вы пробовали
supportFinishAfterTransition();
??4. Да, я пробовал это в блоке, где я запускаю действие справки, но когда я нажимаю кнопку «Назад» из действия справки, приложение завершает работу без фрагмента, к которому можно вернуться. Я буду продолжать пробовать разные решения. Спасибо за помощь.
Ответ №1:
попробуйте добавить finish() при нажатии кнопки «Назад» в операции «Настройки». Когда мы вызываем одно действие из другого действия, состояние экземпляра вызывающего действия сохраняется, поэтому ваш фрагмент будет сохранен в стеке, а затем будет вызвано вызываемое действие, поэтому, если вы хотите вернуться, просто завершите первое действие, и будет вызвано состояние экземпляра вызывающего действия, и вы получите следующеетот же фрагмент, из которого вы вызвали действие settings. Поэтому добавьте этот код в SettingsActivity.
@Override
onBackPressed{finish();}
это решит проблему с вашим фрагментом.я не уверен, что ящик останется открытым.