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(“数据”)
谢谢,但这并没有回答我的问题。我的问题是,结果代码被取消,即使我发送了OK。也就是说,它没有进入if条件。你能解释一下在哪种情况下你会得到结果吗?取消了。情况就是一切正常。活动不要崩溃,后退按钮未按检查此链接是的,只需将data=intent.get(“data”)
替换为data=intent.getStringExtra(“data”)谢谢,但这并没有回答我的问题。我的问题是,结果代码被取消,即使我发送了OK。也就是说,它没有进入if条件。你能解释一下在哪种情况下你会得到结果吗?取消了。情况就是一切正常。活动请勿崩溃,后退按钮未按检查此链接谢谢,但这并没有回答我的问题。我的问题是,结果代码被取消,即使我发送了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,那么问题可能就出在它上面。是的,我检查了这两个值,结果是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,这可能是问题的根源。是的,我检查了这两个值,问题在于结果代码