Android – Simulate Back Button

Когда я нажимаю кнопку в своем приложении, мне нужно вернуться к последнему действию.

Есть идеи?

Вызов finish() из действия, которое вы хотите завершить, должен позаботиться об этом.

Редактируйте много лет спустя: это все еще работает, но это немного сложный подход. Когда я изначально разместил это, Fragments не существовали, и (как отмечали несколько комментаторов) это не работает совсем так же, когда есть Fragments . Теперь, когда вы используете Fragments. есть более эффективные подходы Fragments.

Только для записи: описанный метод не делает то же самое, что и кнопка «Назад», в некоторых случаях, но вы можете позвонить

 this.onBackPressed(); 

или

 getActivity().onBackPressed(); 

Если вы находитесь в фрагменте, чтобы добиться того же самого поведения.

При использовании фрагментов:

 getFragmentManager().popBackStack(); 

или

 getSupportFragmentManager().popBackStack(); 

Если вы используете пакет android.support.v4.app

Это относится к ситуации, когда один и тот же фрагмент иногда может быть единственным фрагментом в активности, а иногда и частью многократной активности, например, на планшете, где одновременно видны два фрагмента.

 /** * Method that can be used by a fragment that has been started by MainFragment to terminate * itself. There is some controversy as to whether a fragment should remove itself from the back * stack, or if that is a violation of the Android design specs for fragments. See here: * http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-ie-its-equivalent-of-finish */ public static void fragmentImplementCancel(Fragment fragment) { FragmentActivity fragmentActivity = fragment.getActivity(); FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); if (fragmentManager.getBackStackEntryCount() == 1) { fragmentManager.popBackStack(); } else { fragmentActivity.finish(); } } 

Например, этот код можно вызвать для реализации кнопки «Отмена».

  if (theButton.getId() == R.id.btnStatusCancel) { StaticMethods.fragmentImplementCancel(this); } 

Вы можете подменять кнопку «вверх» на задней кнопке:

 @Override public void onBackPressed() { onNavigateUp(); }