[android]startActivityForResult() 返回 RESULT_CANCELED

发布时间: 2016/10/10 21:41:15
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 2 Activity 类和 1 的非activity课要求从 startActivityForResult() Context 通过在构造函数中。这是它的外观︰ FirstActivity-NonActivity-SecondActivity-FirstActivity >。SecondActivity 在 ArrayList 需要将结果传递给 FirstActivity 的自定义对象。还有一个问题。当 onActivityResult() 被称为 resultCode 是 RESULT_CANCELED,但不是 RESULT_OK 即使 setResult(RESULT_OK, intent ) 调用。这里是我的代码︰

NonActivity

public void showActivity() {
    Intent intent = new Intent(request, ActivityKorak.class);
    intent.putExtra("data", fields);

    request.startActivityForResult(intent, 1);
}

SecondActivity

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

    Intent intent = new Intent();
    intent.putExtra("data", fields);
    setResult(Activity.RESULT_OK, intent);

    finish();
}

FirstActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);
    if(resultCode != Activity.RESULT_CANCELED){
        if(requestCode == 1) {
            Bundle extras = intent.getExtras();
            ArrayList<CustomInput> fields = (ArrayList<CustomInput>) extras.getSerializable("data");
        }
    }
}

解决方法 1:

你必须简单地删除

super.onBackPressed();

在 onBackPressed 方法中

发生了什么是"super.onBackPressed()"是设置为"RESULT_CANCELED"的结果代码和整理你 activity

赞助商