Подтвердить что ты не робот

Возврат результата цели, когда активность закрыта кнопкой "Назад"

Я начинаю новый 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()). Каков правильный способ сделать это? Спасибо!

4b9b3361

Ответ 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);

}