我有一个包含多个用户可编辑项目(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