Ответ 1
У меня была та же проблема. В частности, я реализую PreferenceFragment, и я хочу, чтобы кнопка возврата вернула меня к тому, что ранее был загружен.
Похоже, что "задний стек" - это то, что не запускается автоматически с помощью кнопки system. Моим решением было вручную вытащить задний стек из onBackPressed:
@Override
public void onBackPressed()
{
if (inSettings)
{
backFromSettingsFragment();
return;
}
super.onBackPressed();
}
Всякий раз, когда я перехожу к фрагменту моих предпочтений, я устанавливаю inSettings boolean в true, чтобы сохранить это состояние. Вот как выглядит мой метод backFromSettingsFragment:
private void backFromSettingsFragment()
{
inSettings = false;
getFragmentManager().popBackStack();
}
Итак, если вы можете отслеживать состояние, когда вы находитесь во Фрагменте [4] и перехватываете кнопку "Назад", вы должны иметь возможность вручную вызывать
getFragmentManager().popBackStack();
чтобы вернуться к фрагменту [3].
Примечание: помните, что вам нужно добавить фрагмент [3] в задний стек, не Фрагмент [4]. (Если [4] не перейдет к [5], и вам также нужно вернуться к [4].)