即使我发送了一个intent,OnActivityResult也会在传递意图时获得null

时间:2018-03-28 11:12:45

标签: android android-intent onactivityresult

我有两项活动。使用startActivityForResult(intent,request_code)从第一个活动调用第二个活动。 在第二个活动中,我有这个代码:

Intent i = getIntent();
i.putExtra("data" , some data);
setResult(Activity.RESULT_OK,i);
finish();

然后,为了获取第一个活动中的数据,我使用此代码:

    @Override
protected void onActivityResult(int requestCode,int resultCode,Intent intent)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==this.uploadRequestCode && resultCode == Activity.RESULT_OK)
    {
        data = intent.get("data")
    }

我以这种方式开始活动:

Intent uploadIntent = new Intent(this,uploadActivity.class)
startActivityForResult(uploadIntent,this.uploadRequestCode)

问题是我得到的结果代码是RESULT_CANCELLED,即使我设置了RESULT_OK。

注意

我不是在谈论按下后退按钮的情况。

更新

我发现即使我发送了一个intent,我在onActivityResult()中获得的意图仍为null,这就是结果代码为RESULT_CANCELLED的原因。

任何人都知道为什么意图是空的?

2 个答案:

答案 0 :(得分:1)

也许这可以帮助你,我有一个项目

这是我如何开始我的活动

Intent intent = new Intent(FirstActivity.this, ActivityThatReturnInfo.class);
startActivityForResult(intent, 1);

这是来自我想要返回一些值的活动

Intent returnIntent = new Intent();
returnIntent.putExtra("VAR",someInfo);
setResult(Activity.RESULT_OK,returnIntent);
finish();

这是在启动正在等待信息的活动

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    switch (requestCode)
    {
        case 1:
            if(resultCode == Activity.RESULT_OK)
            {
                String result = data.getStringExtra("VAR");
                // Code to do
            }
            break;
        default:
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if(result != null)
            {
                if(result.getContents() != null)
                {
                    // Code to do
                }
            }
            break;
    }
}

答案 1 :(得分:1)

从FirstActivity启动SecondActivity

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 100);

从SecondActivity向FirstActivity发送数据

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();

获得FirstActivity的结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if (requestCode == 100 && resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
            Log.e("Result",result);
    }
}

修改 将您的代码更改为以下并尝试一次。 将意图从SecondActivity发送到FirstActivity Intent i = getIntent();Intent intent= new Intent();