Android 即使我发送了一个意图,当意图传递时OnActivityResult也会得到null

Android 即使我发送了一个意图,当意图传递时OnActivityResult也会得到null,android,android-intent,onactivityresult,Android,Android Intent,Onactivityresult,我有两项活动。第二个活动是使用startActivityForResult(intent,request\u code)从第一个活动调用的。 在第二个活动中,我有以下代码: Intent i = getIntent(); i.putExtra("data" , some data); setResult(Activity.RESULT_OK,i); finish(); @Override protected void onActivityResult(int requestCode,i

我有两项活动。第二个活动是使用
startActivityForResult(intent,request\u 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 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)
问题是,即使我将结果设置为OK,我得到的结果代码仍然被取消

注意

我不是说按下后退按钮的情况。

更新

我发现即使我发送了一个intent,我在activityresult()中得到的intent也是null的,这就是结果代码被取消的原因


有人知道为什么意图是空的吗?

也许这可以帮助你,从我的一个项目中得到一些帮助

这就是我如何开始我的活动

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

也许这能帮到你,我的一个项目

这就是我如何开始我的活动

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

从第一个活动开始第二个活动

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 100);
从第二个活动向第一个活动发送数据

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();
@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);
    }
}
在FirstActivity中获得结果

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();
@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 i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 100);
从第二个活动向第一个活动发送数据

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();
@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);
    }
}
在FirstActivity中获得结果

Intent intent= new Intent();
intent.putExtra("result",result);
setResult(RESULT_OK,intent);
finish();
@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()
意图=新意图()

是的,只要用
data=intent.getStringExtra(“数据”)替换
data=intent.getStringExtra(“数据”)
data=intent.get(“data”)
替换为
data=intent.getStringExtra(“data”)setResult(Activity.RESULT_OK,i)带有
设置结果(结果正常,i)
如果这不起作用,我不知道
活动.RESULT\u OK
的默认值,但为了以防万一,请记录
resultCode
以查看是否正确,我尝试发送RESULT\u OK、Activity.RESULT\u OK和-1,这是RESULT\u OK的值。仍然不工作,您是否检查了
requestCode
是否是
this.uploadRequestCode
所拥有的?如果输入
,那么这两个值都必须为true,那么问题可能就出在它上面。是的,我检查了这两个值,结果是code谢谢,但这并没有回答我的问题。我的问题是,结果代码被取消,即使我发送了OK。也就是说,它不会进入if条件ohh sry,尝试执行ss_uu告诉的操作,替换
setResult(Activity.RESULT_OK,i)带有
设置结果(结果正常,i)
如果这不起作用,我不知道
活动.RESULT\u OK
的默认值,但为了以防万一,请记录
resultCode
以查看是否正确,我尝试发送RESULT\u OK、Activity.RESULT\u OK和-1,这是RESULT\u OK的值。仍然不工作,您是否检查了
requestCode
是否是
this.uploadRequestCode
所拥有的?如果输入
,则这两个值都必须为true,这可能是问题的根源。是的,我检查了这两个值,问题在于结果代码