Android: вернитесь к предыдущей деятельности

Я хочу сделать что-то простое в приложении для Android. Как можно вернуться к предыдущему действию.

Какой код мне нужен, чтобы вернуться к предыдущему действию.

Ответ 1

Действия Android хранятся в стеке действий. Возвращение к предыдущему действию может означать две вещи.

  • Вы открыли новую активность из другого действия с помощью startActivityForResult. В этом случае вы можете просто вызвать функцию finishActivity() из вашего кода, и она вернет вас к предыдущему действию.

  • Следите за стеком действий. Всякий раз, когда вы начинаете новую деятельность с намерением, вы можете указать флаг намерения, например FLAG_ACTIVITY_REORDER_TO_FRONT или FLAG_ACTIVITY_PREVIOUS_IS_TOP. Вы можете использовать это для перетасовки между действиями в приложении. Не использовали их много, хотя. Взгляните на флагов: http://developer.android.com/reference/android/content/Intent.html

Как указано в комментариях, если активность открывается с помощью startActivity(), то ее можно закрыть с помощью finish(). Если вы хотите использовать кнопку "Вверх", вы можете поймать ее в методе onOptionsSelected(MenuItem item) с проверкой идентификатора элемента на android.R.id.home в отличие от R.id.home, как указано в комментариях.

Ответ 2

Попробуйте Activity#finish(). Это более или менее то, что по умолчанию делает кнопка "Назад".

Ответ 3

Просто напишите на клике finish(). Он перенесет вас в предыдущее действие.

Ответ 4

Только это

super.onBackPressed();

Ответ 5

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Это приведет к предыдущему действию, сохраняющему свой стек и очистке всех действий после него из стека.

Например, если стек был A- > B- > C- > D, и вы запускаете B с этим флагом, стек будет A- > B

Ответ 6

Вы хотите взять под контроль поведение кнопки "Назад"? Вы можете переопределить кнопку "Назад" (перейти к определенной операции) одним из двух способов.

Для Android 1.6 и ниже:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

Или если вы поддерживаете только Android 2.0 или выше:

@Override
public void onBackPressed() {
    // do something on back.
    return;
}

Подробнее: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Ответ 7

Просто позвоните по этому методу, чтобы завершить текущую активность или вернуться к onBackPressed

finish();

ИЛИ

onBackPressed();

Ответ 8

если вы хотите перейти только к использованию предыдущей активности

finish();

ИЛИ

onBackPressed();

если вы хотите перейти к второму действию или ниже, используя следующее:

intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);

Ответ 9

Если вы правильно настроили файл AndroidManifest.xml с родительской активностью, вы можете использовать:

NavUtils.navigateUpFromSameTask(this);

Если это ваша дочерняя деятельность.

Ответ 10

Добавьте это в свой метод onCLick(), он вернется к предыдущему действию

отделка();

или вы можете использовать это. Он отлично работал у меня.

 @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();

      if ( id == android.R.id.home ) {
         finish();
         return true;
       }

  return super.onOptionsItemSelected(item);
  }

Ответ 12

Запустите второе действие с использованием намерения (используйте либо startActivity или startActivityForResult в соответствии с вашими требованиями). Теперь, когда пользователь нажимает кнопку "Назад", текущая активность сверху будет закрыта, а предыдущая будет показана.

Теперь скажем, что у вас есть два действия: один для выбора некоторых параметров для пользователя, например, язык, страна и т.д., и после его выбора пользователь нажимает кнопку "Далее", чтобы перейти к форме входа (например). Теперь, если логин не увенчался успехом, тогда пользователь будет находиться в активности входа в систему, что, если логин будет успешным?

Если вход успешно завершен, вам нужно начать другое действие. Это означает, что будет запущено третье действие, и все еще есть два действия. В этом случае будет полезно использовать startActivityForResult. Когда логин будет успешным, отправьте данные OK в первую активность и закройте активность входа. Теперь, когда данные получены, затем запустите третье действие и закройте первое действие, используя финиш.

Ответ 13

Получил ту же проблему и

finish();  OR super.onBackPressed();

у меня нормально работало, оба работали одинаково, но не повезло с return

Ответ 14

Вы можете попробовать следующее:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Ответ 15

Попробуйте это, так как вам нужно нажать кнопку

finish();
onBackPressed();

Ответ 16

Все новые действия/намерения по умолчанию имеют обратное/предыдущее поведение, если только вы не закодировали finish() в вызывающей активности.

Ответ 17

@Override
public void onBackPressed() {
    super.onBackPressed();
}

и если вы хотите, чтобы на кнопке щелкнуть назад, просто поставьте

bbsubmit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});

Ответ 18

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();

      if ( id == android.R.id.home ) {
          finish();
          return true;
      }

      return super.onOptionsItemSelected(item);
 }

Попробуйте, он работает как на кнопке панели инструментов , так и на аппаратной кнопке.

Ответ 19

Я предлагаю NavUtils.navigateUpFromSameTask(), это легко и просто, вы можете изучить его с помощью разработчика google.Wish я мог бы вам помочь!

Ответ 20

Есть несколько случаев, чтобы вернуться к предыдущей активности:

Случай 1: если вы хотите вернуть результат к предыдущей активности, то ActivityA.java

 Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
               startActivityForResult(intent,2);

FBHelperActivity.java

 Intent returnIntent = new Intent();
 setResult(RESULT_OK, returnIntent);
 finish();

Случай 2: ActivityA → FBHelperActivity→ ActivityA

ActivityA.java

 Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
               startActivity(intent);

FBHelperActivity.java

after getting of result call finish();
 By this way your second activity will finish and because 
 you did not call finish() in your first activity then
 automatic first activity is in back ground, will visible.

Ответ 21

Помимо всех упомянутых ответов, это еще один альтернативный способ сделать это, скажем, у вас есть два класса, класс A и класс B.

Класс A вы сделали некоторые действия, такие как выбор флажка, распечатали некоторые данные и намерены использовать класс B. Класс B, вы хотели бы передать несколько значений классу A и сохранить предыдущее состояние класса A, вы можете использовать, попробовать этот альтернативный метод или загрузить исходный код, чтобы продемонстрировать это.

http://whats-online.info/science-and-tutorials/125/Android-maintain-the-previous-state-of-activity-on-intent/

или

http://developer.android.com/reference/android/content/Intent.html

Ответ 22

Просто попробуйте это,  первая деятельность

Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);

В вашем втором действии

@Override
public void onBackPressed() {
    this.finish();
}

Ответ 23

Во-первых, об этом нужно помнить, если вы хотите вернуться к предыдущему занятию. Тогда не вызывайте метод finish(), когда переходите к другому действию с помощью Intent.

После этого у вас есть два способа вернуться от текущей активности к предыдущей:

Просто позвоните: finish() под слушателем нажатия кнопки, Или же Переопределите следующий метод, чтобы вернуться назад с помощью кнопки возврата системы:

@Override
public void onBackPressed() {
    super.onBackPressed();
}