2011-08-28 142 views
0

當試圖將數據從一個活動傳遞到另一個活動時,它在一個方向上正常工作父>>子。但返回路徑的孩子>>父母崩潰我認爲與空指針異常。 現在我可以很容易地捕獲null,但無法確定我傳遞的int在哪裏丟失?android返回活動額外返回null

你如何進行調試這種類型的問題 - 任何見解等等

行發生崩潰:INT =的binVal extras.getInt(「的binVal」);

// when leaving the child activity 
OnClickListener mReturnListener = new OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = getIntent(); 
     intent.putExtra("binVal", (int)binVal); 
     setResult(Activity.RESULT_OK, intent); 
     finish(); 
    } 
}; 



//on return to the parent actvity 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
    case SET_BIN_TEMP: 
     if (resultCode == RESULT_OK) {   
      Bundle extras = getIntent().getExtras(); 
      if (extras == null) 
       Toast.makeText(PilotActivity.this, "null returned!", Toast.LENGTH_SHORT).show(); 
      else { 
       int binVal = extras.getInt("binVal"); 
       text.setText(Integer.toString(binVal)); 
      } 
     } 
     return; 
    } 
} 

回答

0

我曾在過去的這個問題,不得不做一些像下面的代碼示例:

OnClickListener mReturnListener = new OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = getIntent(); 
     intent.putExtra("binVal", (int)binVal); 

     if (getParent() == null) 
      YourActivity.this.setResult(Activity.RESULT_OK, intent); 
     else 
      YourActivity.this.getParent().setResult(Activity.RESULT_OK, intent); 

     finish(); 
    } 
}; 
3

看看你onActivityResult(...)參數...

protected void onActivityResult(int requestCode, int resultCode, Intent data) 

當已從startActivityForResult開始的活動返回,返回的Intent是參數data

在你的「父母」活動使用的是其getIntent()方法,該方法返回Intent(如有的話)最初開始的活動。

而不是...

Bundle extras = getIntent().getExtras(); 

...你應該使用...

Bundle extras = data.getExtras(); 
+0

優秀,感謝你的洞察。更改爲data.getExtras()解決了它。 – Fry