问题描述
我知道这个问题已经问了很多遍了,我正确地遵循了所有步骤,但是在我的FirstApplication中仍然获取空数据
FirstApplication开始使用Mainactivity从库类中获取结果,该方法是使用构造函数中的activity变量初始化的:
sendIntent.putExtra("data",bundle);
sendIntent.setType("text/plain");
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
activity.startActivityForResult(sendIntent,requestCode);
}
SecondApplication获得意图并进行必要的操作
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("data");
if (bundle!=null){
type = bundle.getString("type");
num1 = Integer.parseInt(bundle.getString("num1"));
num2 = Integer.parseInt(bundle.getString("num2"));
if (type.equalsIgnoreCase("add")){
result = String.valueOf(num1+num2);
}else {
result = String.valueOf(num1-num2);
}
}
将结果发送到FirstApplication
Bundle bundle1 = new Bundle();
if (bundle1!=null){
Intent send = new Intent();
bundle1.putString("result",result);
send.putExtra("datasend",bundle1);
setResult(Activity.RESULT_OK,send);
finish();
}
在FirstApplication MAinActivity中接收结果
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
Bundle bundle = data.getBundleExtra("datasend");
result = bundle.getString("result");
}
} else {
super.onActivityResult(requestCode,resultCode,data);
}
}
但是在这里我正在接收resultCode 0和数据null。任何帮助将不胜感激。谢谢。
解决方法
问题出在这一行
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
通过调用Intent.FLAG_ACTIVITY_NEW_TASK
,您将第二个活动设置在后堆栈的顶部,并取消startActivityForResult()
的影响
因此应将其删除以获取结果