java – Android:当按下“返回”按钮时提示用户保存更改

我有一个包含多个用户可编辑项目(EditText字段,RatingBar等)的活动。我想提示用户是否按下后退/主页按钮,并且更改尚未保存。阅读完android文档后,似乎这段代码应该放在onPause方法中。我试图把一个AlertDialog在onPause,但对话框显示,然后立即下降,因为没有任何东西阻止暂停完成。

这是我到目前为止:

@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()并监听回键,然后覆盖默认行为:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

如果您只支持Android 2.0及更高版本,他们已添加了一个onBackPressed(),您可以改用:

@Override
public void onBackPressed() {
    // do something on back.
    return;
}

这个答案基本上从​​this blog post撕开。如果你需要长按,兼容性支持,支持虚拟硬键,或像onPreIme()等原始解决方案,阅读它。

http://stackoverflow.com/questions/2459848/android-prompt-user-to-save-changes-when-back-button-is-pressed

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Android:当按下“返回”按钮时提示用户保存更改