Android: startActivityForResult () с функциональностью кнопки НАЗАД - PullRequest
12 голосов
/ 03 августа 2011

Я хотел бы начать новый activity для result с startActvityForResult(), но я бы хотел, чтобы кнопка back работала как обычно в новом действии.

В настоящее время, когда я вызываю новый Activity для результата, ничего не происходит, когда я нажимаю кнопку "Назад" в новом действии.

Я пробовал что-то вроде этого:

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

в новом Деятельности, но это не сработало. Тем не менее, ничего не происходит при нажатии кнопки назад.

Есть ли способ обойти это?

РЕДАКТИРОВАТЬ: Я мог бы, конечно, загрузить последний Activity в onBackPressed() (можно?), Но это выглядит как довольно дурацкий взлом.

Ответ Алекса Ади решает мою проблему, но я до сих пор не понимаю, почему onBackPressed() не работает. Рабочий код теперь выглядит примерно так:

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

Я мог бы использовать объяснение.

Ответы [ 3 ]

14 голосов
/ 03 августа 2011

Вы можете попробовать

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
         finish();
    }
    return super.onKeyDown(keyCode, event);
}
7 голосов
/ 03 августа 2011

Вам вообще не нужно переопределять поведение кнопки «Назад».По умолчанию, если пользователь нажимает кнопку «Назад», результат будет Activity.RESULT_CANCELED.

0 голосов
/ 03 августа 2011

Попробуйте избавиться от строки, содержащей финиш ().

...