2011-09-15 71 views
1

從主代碼是:onActivityResult拋出故障提供結果ResultInfo

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 toast Toast.makeText(this,「aaa」,1500).show();「並且注意到它會過早地燃燒,然後創建新的活動,而不是完成時!

回答

2

通過使用setFlags方法解決它:

dialogIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
0

事實上,我解決它通過斷言該數據作爲fellowing:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if(data == null) 
    return; 
else{ 
//... 
    } 
super.onActivityResult(requestCode, resultCode, data); 
} 
相關問題