2014-02-07 35 views
0

我有兩個活動,第二個活動,當我按下輸入它會得到一些價值,並帶回第一個活動。回到上一個活動,意圖錯誤

這是我的代碼:

次活動

//event on "ENTER" button 
Intent i = new Intent(); 
i.putExtra("namaDokter", "kosong"); 
i.putExtra("idDokter", "kosong"); 
setResult(RESULT_OK, i); 
finish(); 

獲得的第一項活動

public void onActivityResult(int requestCode,int resultCode, Intent data) 
{ 
    namaDokter=data.getStringExtra("namaDokter"); 
    idDokter=data.getStringExtra("idDokter"); 
} 

它的價值,但如果我不按 「ENTER」 鍵並且只需按下硬件按鈕(或者當我使用模擬器時鍵盤上的Esc鍵),我的應用程序就會啓動噓,我想這是因爲我沒有得到任何價值data.getStringExtra("namaDokter");

我該怎麼辦?

回答

1

你需要檢查,如果你有RESULT_OK與否

public void onActivityResult(int requestCode,int resultCode, Intent data) 
{ 
    if(ResultCode == RESULT_OK) { 

    namaDokter=data.getStringExtra("namaDokter"); 
    idDokter=data.getStringExtra("idDokter"); 
    }else 
    //You pressed back 
} 
1

發生這種情況,因爲當你按下Enter按鈕傳遞與值的意圖,但是當你按下Back那麼活動不傳球完成任何意圖。
所以你需要補充一點:

public void onActivityResult(int requestCode,int resultCode, Intent data) 
{ 
    if(ResultCode == RESULT_OK) { 
    namaDokter=data.getStringExtra("namaDokter"); 
    idDokter=data.getStringExtra("idDokter"); 
    }else 
    Toast.makeText(getApplicationContext(), 
      "You Pressed Back!",Toast.LENGHT_LONG).show(); 
} 

希望它能幫助。 :)

0

附加到現有的答案在這裏檢查resultCode是另一個問題:

如果你想發送Intent即使用戶按下背面我們可以覆蓋在第二ActivityonBackPressed - 方法:

@Override 
public void onBackPressed() { 
    Intent i = new Intent(); 
    i.putExtra("namaDokter", "kosong"); 
    i.putExtra("idDokter", "kosong"); 
    setResult(RESULT_OK, i); 
    super.onBackPressed(); 
}