Возврат результата цели, когда активность закрыта кнопкой "Назад"
Я начинаю новый Activity
с исходного Activity
с startActivityForResult(intent, requestCode)
. Я хочу вернуть данные в исходный Activity
, когда пользователь нажимает кнопку "Назад", поэтому, когда возвращается к исходному Activity
. Я пробовал два метода:
-
переопределение onBackPressed()
:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
-
переопределение onPause()
:
@Override
protected void onPause() {
super.onPause();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
К сожалению, никто из них не работал (resultCode
не RESULT_OK
в onActivityResult()
). Каков правильный способ сделать это? Спасибо!
Ответы
Ответ 1
Поскольку этот вопрос все еще привлекает внимание, я отправляю более правильный ответ, чем тот, который я принял два года назад, спасибо за MasterGaurav за наконечник.
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
super.onBackPressed();
}
Ответ 2
Попробуйте следующее:
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
finish();
}
Ответ 3
Попробуйте следующее:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
Ответ 4
Запустите новое действие из исходной операции с помощью startActivityForResult(intent, requestCode)
когда вы хотите вернуть данные в исходную активность, когда пользователь нажимает кнопку "Назад", поэтому, когда возвращается к исходной активности.
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putIntegerArrayListExtra(SELECTION_LIST, selected);
setResult(RESULT_OK, intent);
}
если вы хотите получить результат от недавно открытого действия Activity Override
onActivityResult(int requestCode, int resultCode, Intent data)
Метод из первоначальной активности
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}