这是来自主要代码:
public void ChangeFlag(View view)
{
Intent dialogIntent = new Intent(getBaseContext(), dialogPickFlag.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(dialogIntent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this, data.getStringExtra("str") , 1500 ).show();
}
这是来自活动,被称为:
public void endResult(String s)
{
Intent intent = new Intent();
intent.putExtra("str", s);
setResult(RESULT_OK,intent);
finish();
}
但奇怪的是它与
崩溃了java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {Constructor.rob.com/Constructor.rob.com.constr}: java.lang.NullPointerException
显然只有请求代码有通过,但为什么不通过响应和数据?
有什么想法吗?谢谢!
修改: 改为吐司为“Toast.makeText(this,”aaa“,1500).show();”并注意到它过早地触发,然后创建新活动,而不是在它完成时!
答案 0 :(得分:2)
使用setFlags方法解决它:
dialogIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
答案 1 :(得分:0)
实际上,我通过断言数据来解决它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data == null)
return;
else{
//...
}
super.onActivityResult(requestCode, resultCode, data);
}