当前位置: 首页 > 面试题库 >

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

匡旭东
2023-03-14
问题内容

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

这个答案本质上是从这篇博客文章中删除的。如果您需要 按, 兼容性 支持,对 虚拟硬 键的支持或诸如此类的 原始 解决方案,请阅读它
onPreIme()



 类似资料:
  • 在我的应用程序中,我想在按下后退按钮时退出应用程序,这是我的代码: 它工作正常,但当我退出应用程序时,它不会完全退出,并显示带有我的应用程序徽标的空白页面,当我再次按下后退按钮退出应用程序,我如何修复它??? 编辑: 我使用这个代码而不是上面的代码,但我的应用程序完全退出,但我希望它在后台运行并且不完全退出,我该怎么做?

  • } 完整错误消息:

  • 我正在开发一个需要

  • 所以我有这些按钮(3叠6个,18个),我想实现的是当我按下其中一个按钮时: > 边框颜色 其他按钮将重置为其正常样式 但是我不想通过“isEnable”技巧禁用其他的(我只在这里找到了涉及isEnable的解决方案),我仍然希望它们被启用,我只是希望它们不要在按下时被我的自定义样式“突出显示”。 对于第一部分,也就是我在IBAction中所做的造型: 这一小部分只是一个按钮,但我想如果我有18个按

  • 我执行了Flutter Launcher图标程序,它工作得很好,所有应用程序图标都改变了,在下面文件夹中的图像被我的图标改变后: mipmap-hdpi mipmap-mdpi mpmap-xhdpi mipmap xxhdpi mpmap-xxxhdpi 然而,有一个图标没有被更改,我不知道如何更改。 在这张图片下面,仍然是颤动图标。 图标Flutter演示 这个图标应该已经改变了,因为其他所有

  • 问题内容: [编辑]经过大量挖掘,我发现问题出在我如何将CKEditor集成到页面中。如公认的答案所述,在这种情况下,简单而明显的方法 确实 有效。 你好 在按下“提交”按钮之后,但在实际提交之前,我需要更改表单的值。 我尝试挂钩到表单的“ submit”事件,并在那里手动更改文本字段的值,但是看起来实际上并没有更改提交的值。 有任何想法吗? 问题答案: 我对您的说法感到奇怪,即处理程序对您不起作