我正在創建一個應用程序,其中包含3個活動,比如說A,B和C.活動A是主要活動,當應用程序打開時啓動。android Nullpointerexception with intent data = null總是
使用startActivityForResult(intent,1)將活動A稱爲活動B; 活動B返回一個成功捕獲的結果,並且在ActivityA的onActivityResult中,我使用startActivityForResult(intent2,2)啓動Activity C;
這裏是我的活動A
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
Log.d("MAIN","Inside on activity result requestCode is : " + requestCode);
if(requestCode == 1){
if(resultCode == RESULT_OK){
Log.d("MAINACT", "Inside RESULT CODE OK");
if(data.getStringExtra("puzzleID")!=null){
Log.d("MAINACT", "Inside puzzle has been selected");
String puzzleIdResult = data.getStringExtra("puzzleID");
Intent puzzleIntent = new Intent(MainActivity.this, TrialActivity.class);
puzzleIntent.putExtra("puzzleID", puzzleIdResult);
startActivityForResult(puzzleIntent, 2);
}
}
}else if(requestCode == 2){
Log.d("MAINACT", "Inside request code is 2 result code is : " + resultCode);
if(resultCode == 0){
if(data!=null){
Log.d("MAINACT", "Inside STATUS NOT NULL");
String puzzleStatus = data.getStringExtra("status");
Log.d("MAINACT", "Puzzle status retrieved is : " + puzzleStatus);
if(puzzleStatus.equals("pause")){
Log.d("MAINACT", "Inside puzzle status is paused");
}
}else{
Log.d("MAINACT", "Data is null!!");
}
}
onActivityResult這是從活動Ç
@Override
protected void onPause() {
super.onPause();
Log.d(TRIALTAG, "On Pause CALLED");
Log.d(TRIALTAG, "Sending Intent");
String puzzleID = Integer.toString(puzzle_ID);
Intent returnPause = new Intent();
returnPause.putExtra("status", "pause");
returnPause.putExtra("puzzleid", puzzleID);
if(getParent() == null){
setResult(Activity.RESULT_OK, returnPause);
}else{
getParent().setResult(Activity.RESULT_OK, returnPause);
}
finish();
}
返回結果一心想從活動C,我得到一個NullPointerException返回,並且語句。
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=0, data=null} to activity
{com.mypackagename.sudoku/com.mypackagename.sudoku.MainActivity}: java.lang.NullPointerException
我放入數據!= null檢查以防止崩潰。我得到的數據是空的!現在每當我在Activity C中暫停時,我在閱讀完SO上的其他解決方案之後嘗試了getParent方法,但這沒有幫助。爲什麼我的數據是在Activity B中設置的,而不是在Activity C中設置的?這是我第一個完整的應用程序,請原諒任何無知。
請縮進代碼 – stinepike 2013-05-04 06:50:04
可怕的閱讀你的代碼的傢伙.. – Siddharth 2013-05-04 06:53:33
對窮人indenting..should've對不起變得更加清晰。 。@ Shobhit Puri非常感謝你的清理。下次我會自己做。 – KVNam 2013-05-04 08:58:13