【问题标题】:Show a dialog when press Home button android按下主页按钮时显示一个对话框android
【发布时间】:2013-12-23 09:41:34
【问题描述】:

当用户按下 Home 时,我想在我的应用程序中显示一个 AlertDialog(无论是否退出应用程序)。我读到 Home 不能被覆盖。所以,我试图覆盖 onPause 方法。当我按下返回按钮时它工作正常。但是,问题出在主页按钮上。当我按下主页按钮时它会显示对话框,但它会在我对对话框执行任何操作之前将应用程序发送到后台。有没有办法在将应用程序发送到后台之前做一些工作?

我的作品:

@Override
protected void onPause() {
    super.onPause();
    if (clr.equals("red")) {
        AlertDialog.Builder alertD = new AlertDialog.Builder(this);
        alertD.setMessage("Do you want to cancel your schedule?")
                .setCancelable(false)
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {

                                finish();
                            }

                        });
        alertD.setNegativeButton("No",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        moveTaskToBack(true);
                    }
                });
        AlertDialog alertDD = alertD.create();
        alertDD.show();
    }
}

【问题讨论】:

  • 查看此链接以获取示例。您需要使用 KeyEvent stackoverflow.com/questions/11273243/…
  • 当你点击返回按钮时,你确定覆盖 onPause 可以正常运行吗?我试过你的代码,当我点击后退按钮时,应用程序进入后台太快,看不到你的对话框......
  • @MengMeng 是的,它工作得非常好。
  • onPause 不会阻止活动关闭...那么当活动同时关闭时,如何点击对话框?
  • @MengMeng 我覆盖了它,所以它不会完成活动,除非我运行finish() :)

标签: android


【解决方案1】:

这对于您的应用程序的可用性来说是非常糟糕的做法。长按主页按钮会有什么行为?用户知道主页按钮是主页按钮。如果您不想让用户失望,请不要这样做。

【讨论】:

  • 我知道你想发表评论,但你不能:D 其实还不错。用户想要检测它何时进入后台并在之前做一些工作。
【解决方案2】:
 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
           Log.v(LOG_TAG, "onKeyDown: " + event.getKeyCode());
       if (keyCode == KeyEvent.KEYCODE_BACK){                    
               // Do your work 
               return true;
       }
       return super.onKeyDown(keyCode, event);
}

您可以使用上述方法来防止返回键。

你看到有什么APP可以阻止home键吗?无

您只能通过接收 ACTION_CLOSE_SYSTEM_DIALOGS 来注意到 home 键被​​点击

【讨论】:

  • +1 表示支持。你能告诉我如何接收 ACTION_CLOSE_SYSTEM_DIALOGS 吗?
  • 但是你只能注意到主页按钮被点击,你无法阻止它。仅供参考:stackoverflow.com/questions/8878038/…
  • 感谢您的信息:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 2021-12-14
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多