OnActivityResult() имеет данные Intent как null после завершения действия

Привет, я вызываю startActivityForResult() и пытаюсь обработать результат в методе onAcvityResult(). Однако данные Intent являются нулевыми, и результат RESULT_CANCELED. Однако я не знаю, почему.

Я создаю активность с помощью

startActivityForResult(new Intent(this, Class.class),LIST_RESULT);

то в классе Activity

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

    Intent data = new Intent();
    Bundle bundle = new Bundle();

    bundle.putParcelable("name", la);
    data.putExtras(bundle);

    if (getParent() == null) {
        setResult(Activity.RESULT_OK, data);
    } else {
        getParent().setResult(Activity.RESULT_OK, data);
    }

    //finish();
}

finish() не влияет. На самом деле я получаю предупреждение в LogCat, что дублирует запрос на завершение историиRecord

И я обрабатываю результат в:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch(requestCode) {
    case(LIST_RESULT):
        if(resultCode == Activity.RESULT_OK) {
            previousList = data.getExtras();
        }
    break;
    }

}

- значение null, а resultCode - Action.RESULT_CANCELED.

Любые идеи, почему я не получаю никаких результатов? Что-то меняет это между мной, устанавливая это и читая его? Параметр mParent также является нулевым в активности, которая возвращает результат.

Алекс

Ответ 1

Алекс,

Я думаю, вы хотите удалить вызываемого на finish() в свой метод onBackPressed() и заменить его на вызов super.onBackPressed(). Я считаю, что вызов super.onBackPressed() вызывает завершение, и вы никогда не получаете возможность называть setResult().

Try...

@Override
public void onBackPressed() {

    Intent data = new Intent();
    Bundle bundle = new Bundle();

    bundle.putParcelable("name", la);
    data.putExtras(bundle);

    if (getParent() == null) {
        setResult(Activity.RESULT_OK, data);
    } else {
        getParent().setResult(Activity.RESULT_OK, data);
    }

    super.onBackPressed();
}