Я реализовал свой собственный задний стек, но я не уверен, что не так или что я мог бы улучшить, мой сценарий: у меня есть проект с двумя действиями, первое из которых - "SplashActivity" - где я загружаю некоторые сетевые данные - второй, MainActivity.
Внутри моей MainActivity у меня есть фрагмент, а внутри этого фрагмента — веб-просмотр.
Кнопка «Назад» должна вести себя так:
Когда пользователь не перемещается внутри моего веб-просмотра, закройте приложение.
Когда пользователь перемещается в веб-просмотре, используйте предыдущую историю браузера.
Вот мой код:
@Override
public void onBackPressed() {
Log.d("lastfragment", String.valueOf(fragmentStack.lastElement().getId()));
if (fragmentStack.size() >= 2) {
// implement normal behavior?
Fragment activeFragment=fragmentStack.lastElement();
FragmentTransaction ft = getFragmentManager().beginTransaction();
activeFragment.onPause();
ft.remove(fragmentStack.pop());
Fragment returnToFragment=fragmentStack.lastElement();
String name = returnToFragment.getClass().getName();
if(name=="SplashScreen" || name=="LoginFragment"){
// close?
}
else {
// implement normal behavior?
returnToFragment.onResume();
ft.show(returnToFragment);
ft.commit();
}
}
else {
//close ??
}
}