我有两项活动。使用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的原因。
任何人都知道为什么意图是空的?
答案 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();