2011-06-12 54 views
10

嗨,我在調用startActivityForResult()並試圖在onAcvityResult()方法中處理結果。但是,意圖數據爲空,結果爲RESULT_CANCELED。我不知道爲什麼。在活動完成後,onActivityResult()的Intent數據爲null

我與創建活動:在活動類

startActivityForResult(new Intent(this, Class.class),LIST_RESULT); 

然後

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent data = new Intent(); 
    Bundle bundle = new Bundle(); 

    bundle.putParcelable("name", la); 
    data.putExtras(bundle); 

    if (getParent() == null) { 
     setResult(Activity.RESULT_OK, data); 
    } else { 
     getParent().setResult(Activity.RESULT_OK, data); 
    } 

    //finish(); 
} 

完成()沒有任何影響。事實上,我在logcat中得到警告,重複結束請求HistoryRecord

而且我處理結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch(requestCode) { 
    case(LIST_RESULT): 
     if(resultCode == Activity.RESULT_OK) { 
      previousList = data.getExtras(); 
     } 
    break; 
    } 

} 

數據爲空和發送resultCode是Action.RESULT_CANCELED。

任何想法,爲什麼我沒有得到任何通過?在我設置和閱讀它之間有什麼改變嗎? mParent在返回結果的活動中也爲null。

亞歷

回答

27

亞歷克斯,

我想你想刪除您onBackPressed()方法的調用finish(),並與呼叫super.onBackPressed()更換。我相信打電話給super.onBackPressed()正在打電話完成,你永遠沒有機會致電setResult()

嘗試...

@Override 
public void onBackPressed() { 

    Intent data = new Intent(); 
    Bundle bundle = new Bundle(); 

    bundle.putParcelable("name", la); 
    data.putExtras(bundle); 

    if (getParent() == null) { 
     setResult(Activity.RESULT_OK, data); 
    } else { 
     getParent().setResult(Activity.RESULT_OK, data); 
    } 

    super.onBackPressed(); 
} 
+0

真的那麼容易! :(非常感謝你的提示。) – Alex 2011-06-12 16:07:30

+0

Nice call there,William! – 2012-10-17 12:09:18

+0

working for me,thanks。 – Goot 2012-11-10 16:33:27

相關問題