onActivityResult抛出提交结果ResultInfo的失败

时间:2011-09-15 11:17:21

标签: android

这是来自主要代码:

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();”并注意到它过早地触发,然后创建新活动,而不是在它完成时!

2 个答案:

答案 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);
}