2011-08-28 6 views
0

하나의 활동에서 다른 활동으로 데이터를 전달할 때 부모 >> 자식 한 방향으로 올바르게 작동합니다. 하지만 반환 경로 자식 >> 부모 충돌 널 포인터 예외로 생각합니다. 이제 null을 쉽게 잡을 수 있지만 전달 된 int가 손실되는 위치를 파악할 수 없습니까?android return activity extraras returns null

당신은 이러한 유형의 문제 디버깅 어떻게

- 등 어떤 통찰력을 ...

충돌이 선 발생

: INT binVal = extras.getInt ("binVal"); ...

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

때 당신의 onActivityResult(...) 매개 변수에

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(); 
    } 
}; 

답변

0

나는 과거에이 문제가 있었고, 아래의 코드 샘플 그런 짓을했다 startActivityForResult으로 시작된 활동이 반환되고 Intentdata 매개 변수입니다.

'부모'활동에서 원래 활동을 시작한 Intent (있는 경우)을 반환하는 getIntent() 메서드를 사용하고 있습니다. 대신

...

Bundle extras = getIntent().getExtras(); 

... 사용한다 ...

Bundle extras = data.getExtras(); 
3

봐 :

// 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

우수하고 통찰력 주셔서 감사합니다. data.getExtras()로 변경하면 해결되었습니다. – Fry