Как я могу возобновить активность при нажатии кнопки «Назад»? - PullRequest
3 голосов
/ 20 января 2012

Я перехожу от основного занятия к другому, а затем, когда я нажимаю кнопку «Назад», я хочу вернуться к основному занятию и перезапустить его.Как я могу это сделать?

Ответы [ 5 ]

9 голосов
/ 20 января 2012

Вы можете просто переопределить onBackButton, нажимаемую во втором упражнении, чтобы начать первое.Пример:

@Override
public void onBackPressed() {
    startActivity(new Intent(this, FirstActivity.class));
}
3 голосов
/ 02 марта 2016

Я возился с этой проблемой в контексте попытки перезагрузить мое основное действие после изменения предпочтений в пользовательском PreferenceActivity и после некоторых проб и ошибок и чтения других ответов, вот что сработало для меня:

В своей PreferenceActivity я использую onBackPressed () для запуска своей MainActivity (MainActivity.class - это действие, к которому я возвращаюсь:

    @Override
    public void onBackPressed() {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }

В моей MainActivity я называю свою ReferenceActivity (PreferenceSettings.class - это ReferenceActivity, которую я собираюсь выполнить через функцию startSettings () через атрибут onClick в моем XML-макете:

    public void startSettings(View view){
        Intent intent = new Intent(this, PreferenceSettings.class);
        startActivity(intent);
        finish();
    }

Я использую это для перезапуска моей MainActivity, чтобы он снова запускал метод onCreate (), перезагружая (обновляя) мои представления с любыми изменениями, сделанными в моей PreferenceActivity. Это приводит к тому, что моя MainActivity завершает работу и выгружается, когда я запускаю свою ReferenceActivity, позволяя перезапускать ее с помощью кнопки «Назад», нажатой из моей PreferenceActivity. Затем я обновляю отображаемые значения с помощью метода onCreate (), который загружает начальные значения из моих SharedPreferences при создании MainActivity.

Надеюсь, это кому-нибудь поможет!

3 голосов
/ 20 января 2012

Когда вы нажимаете кнопку «Назад» во время второго упражнения, Android автоматически вызывает предыдущее действие в заднем стеке, которое в вашем случае является вашим основным действием.

Для получения дополнительной информации см. Документацию по Android для Задачи и Back Stack .

Android вызывает обратный вызов onResume () каждый раз, когда вы возвращаетесь к активности с помощью кнопки назад. Сделайте всю свою работу по «перезагрузке» там.

2 голосов
/ 20 января 2012

Вам не нужно переопределять ваш onBackPressed. Приведенный ниже метод работает как брелок и является (imho) лучшей практикой.

в вашем MainActivity сделайте это:

private static int CODE = 1; //declare as FIELD

startActivityForResult(new Intent(MainActivity.this, SecondActivity.class), CODE);

Это будет контролировать, если пользователь убил или вышел из SecondActivity. Вы поймаете это, переопределив onActivityResult в MainActivity

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         //SecondActivity closed
         if(requestCode == CODE){
              startActivity(new Intent(MainActivity.this, MainActivity.class)); //reload MainActivity
              finish();
         }
}
1 голос
/ 20 января 2012

Если вы не выключили MainActivity , когда открывали текущую активность, то это должно работать для вас:

    @Override  
   public boolean onKeyDown(int keyCode, KeyEvent event)  
   {  
       if (keyCode == KeyEvent.KEYCODE_BACK) {
           finish();
           return true;
       }

       return super.onKeyDown(keyCode, event); 
}

ИЛИ:

@Override
public void onBackPressed() {
    finish();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...