我有一個包含多個用戶可編輯項目(EditText字段,RatingBar等)的活動。我想提示用戶是否按下了後退/主頁按鈕,並且已經做出了尚未保存的更改。在閱讀完android文檔後,看起來這段代碼應該放在onPause方法中。我試圖把一個AlertDialog然而,在對話框中被顯示的的onPause,然後立即眼淚就下來了,因爲無所不有,從完成阻止暫停。Android:按下「後退」按鈕時提示用戶保存更改
這是我想出迄今:
@Override
protected void onPause() {
super.onPause();
AlertDialog ad = new AlertDialog.Builder(this).setMessage(
R.string.rating_exit_message).setTitle(
R.string.rating_exit_title).setCancelable(false)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// User selects OK, save changes to db
}
}).setNeutralButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// User selects Cancel, discard all changes
}
}).show();
}
我在正確的軌道上或有另一種方式來完成我想在這裏做什麼?任何幫助將是偉大的!
使用的onkeydown()方法將具有的onPause()相同的問題。如果我試圖表明在的onkeydown塊一個警告對話框,當我發現的返回鍵碼的對話框仍然不會阻止。我會立即看到警報,直到按下super.onKeyDown,這會導致窗口關閉。有沒有辦法在繼續之前強制對AlertDialog做出響應? – chriskopec 2010-03-17 17:04:24
你打電話super.onKeyDown()如果你消耗後退按鈕?我假設你應該只是使用「返回true」,如果你彈出打開對話框,爲了向系統表明你已經消耗了後退按鈕;否則,通過調用super(),您仍然會結束調用完成活動的所有內容。 – 2010-03-17 17:16:53
就是這樣,謝謝! – chriskopec 2010-03-17 21:33:30