Могу ли я заставить кнопку «Назад назад» вернуться на два этапа в стек активности?

Я знаю, что я могу переопределить метод onKeyDown , но я хочу, чтобы Back сделать это, просто дважды!

FirstActivity

 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); 

SecondActivity

 int REQUEST_CODE = 123 Intent intent = new Intent(SecondActivity.this, ThirdActivity.class); startActivityForResult(intent, REQUEST_CODE); 

(Чтобы сделать эту педагогику, здесь больше кода для этой деятельности)

ThirdActivity

 @Override public void onBackPressed() { // Semi ugly way of supporting that back button takes us back two activites instead of the usual one. setResultOkSoSecondActivityWontBeShown(); finish(); } private void setResultOkSoSecondActivityWontBeShown() { Intent intent = new Intent(); if (getParent() == null) { setResult(Activity.RESULT_OK, intent); } else { getParent().setResult(Activity.RESULT_OK, intent); } } 

SecondActivity (снова)

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 123) { if (resultCode == RESULT_OK) { finish(); } } } 

Я думаю об этом так:

 A -> B -> C 

A, B, C.

Вы не можете сделать назад дважды, так как первый onKeyDown() будет выполнен на C, а второй должен быть выполнен в B.

Я не знаю, почему вы пытаетесь это сделать, но вот некоторые варианты.

  1. Использование тега android:noHistory :

    Возможно, ваша активность C делает то, что не нуждается в представлении, и поэтому вы хотите вернуться дважды.

  2. Использование намерения. Что-то вроде:

     Intent intent = new Intent(C.this, A.class); startActivity(intent); 
  3. Использование finishActivityFromChild() . Я никогда не пробовал, но похоже, что вы можете использовать его, чтобы решить, что делать на B, в зависимости от того, как C закончился.

| * | Возврат одного экрана или конечной активности:

 finish(); 

| * | Возврат нескольких экранов:

Вы можете вернуться к тому, что когда-либо понадобилось вам, используя намерения и использовать флаги, чтобы предотвратить возврат к тому же экрану:

 Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class); gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(gotoScreenVar); 
Intereting Posts
ListView – ImageLoader перемещает список / элементы в прокрутке вверх Учебник при первом входе в приложение? Есть ли библиотека для плавающих кнопок действия (FAB) с ярлыками? OnActivityResult в фрагменте диалога Как установить APK автоматически, когда загрузка файла завершена (размещена на приватном компьютере) Ошибка десериализации GSON с помощью proguard Android java lang runtimeexception не может подключиться к службе камеры Панель инструментов Android Bottom Bars, перекрывающая панель инструментов Android не прерывает поток ASyncTask после onPostExecution Уникальность ключа подписи устройства поставщика устройств Android Как исправить «Call требует API уровня 11» с Android Activity? Ошибка сокета для идентификатора клиента в брокере RSMB MQTT при использовании android Лучший способ определить текущее прикладное приложение (с помощью службы?) Корректировка разрешений VS Скрыть / показать MenuItem при щелчке мышью actionbar android