在Activity完成后,onActivityResult()将Intent数据作为null

Ale*_*lex 10 android

您好我在调用startActivityForResult()并尝试在onAcvityResult()方法中处理结果.但是,Intent数据为null,结果为RESULT_CANCELED.我不知道为什么.

我正在创建活动:

startActivityForResult(new Intent(this, Class.class),LIST_RESULT);
Run Code Online (Sandbox Code Playgroud)

然后在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();
}
Run Code Online (Sandbox Code Playgroud)

finish()无效.事实上,我在LogCat中收到重复完成请求HistoryRecord的警告

我正在处理结果:

@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;
    }

}
Run Code Online (Sandbox Code Playgroud)

data为null,resultCode为Action.RESULT_CANCELED.

任何想法为什么我没有得到任何通过?在我设置和阅读它之间有什么改变吗?返回结果的活动中的mParent也为null.

亚历克斯

Wil*_*ate 30

亚历克斯,

我想你想finish()在你的onBackPressed()方法中删除被调用的东西,并用调用来替换它super.onBackPressed().我相信打电话给super.onBackPressed()完成,你永远不会有机会打电话setResult().

尝试...

@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();
}
Run Code Online (Sandbox Code Playgroud)