当前位置: 首页 > 知识库问答 >
问题:

当弹出窗口对话框显示时,如何禁用后退按钮?

孟英光
2023-03-14

我有一个弹出窗口,里面有一个EditText输入。弹出窗口的创建如下所示:

布尔可聚焦=true; popupWindow=new PopupWindow(popupView,宽度,高度,可聚焦);

这一切都很有效,EditText可以通过输入。当用户点击android手机上的后退按钮时,问题就出现了。后退按钮关闭弹出窗口。这不应该发生,因为用户的意图是在与弹出窗口进行交互之前无法继续。

现在,我们当然可以将弹出视图的焦点设置为false,以禁止通过后退按钮解除:

Boolean focusable=false;popupWindow=新的popupWindow(popupView、宽度、高度、可聚焦)

这里的问题是EditText没有接收到它需要能够键入的焦点。因此,用户无法与EditText交互。

您知道如何通过弹出视图或编辑文本解决此问题吗?

编辑:

所以我试图用记录器覆盖主活动上的onBackPress方法,以检查活动中是否调用了监听器:

  @Override
    public void onBackPressed() {
        super.onBackPressed();
        Logger.d("isthistriggered");
        finish();
    }

事实证明,当弹出窗口处于活动状态时,不会调用onBackPressed。一旦你第二次按下后退按钮,它就会触发监听器。


共有3个答案

王俊哲
2023-03-14

当对话框显示时,您必须处理后退按钮的按下

只需在您的活动中重写onBackP()

并全局声明弹出窗口对象

 @Override
public void onBackPressed() {
    if (popupWindow != null && popupWindow.isShowing()) {
        popupWindow.dismiss();
    } else {
        super.onBackPressed();
    }
}
戴嘉珍
2023-03-14
匿名用户

如果显示PopupWindow,则onBackPmed不会立即传递到活动,因此覆盖它并执行操作的任何努力都将是徒劳的。实现它的一种方法是创建CustomView并覆盖调度KeyEventPreIme()。您可以遵循描述这种方法的SO。

井轶
2023-03-14

将静态方法removePopupWindow(视图v)放在MainActivity中,并在onBackPressed()中调用它。移除弹出窗口(弹出窗口)

 类似资料:
  • 我正在编写一个小型PyQt4应用程序,它只是一个“是/否”对话框,必须执行一个外部命令(例如“eject/dev/sr0”)并退出。 应用程序运行时,它在按下“是”按钮后执行命令,但我无法在执行命令时使对话框本身退出。 这是我的密码。当我单击“是”时,它会正确地调用'eject/dev/sr0'命令,但在此之后对话框仍然可见。我必须单击“否”关闭应用程序,我希望它在执行命令时自动关闭。我应该添加/

  • 我试图从扩展服务的类中打开一个活动。当应用程序不在前台/未被使用时,我正在执行此任务。我可以在日志中看到,我的服务类故意触发了启动活动。标志\活动\新任务标志。但活动并未开始。但是,当应用程序处于前台/正在使用时,服务触发相同的活动时,活动就会打开。 经过几次搜索,我发现我需要在应用程序设置的“其他权限”部分中手动授予“在后台运行android时显示弹出窗口”的权限。 “在其他应用程序上显示”权限

  • 我正在开发一个应用程序使用Flutter。但是我被一种情况所困扰,Android设备有默认的后退按钮,而iPhone没有。所以当我在iOS设备上打开应用程序时,需要显示后退按钮。此外,如果有任何其他内置功能可用,请指导我。

  • 问题内容: 我需要使用Java或基于Javascript的自动化解决方案来操纵IE浏览器的“弹出窗口和下载对话框”。 我尝试了selenium2,但是它不能正常工作,因此其他建议也一样。实际上selenium2没有提供警报/下载对话框的正确处理,因此我正在考虑使用其他一些javascript / java解决方案。 使用“下载对话框”:我需要将下载的文件保存到特定位置。使用“警报对话框”:我需要检

  • 当用户单击返回按钮时,我正在尝试退出应用程序,让它在单击是按钮时显示对话框是/否按钮,让它退出应用程序,包括注册活动,假设您在主活动上。 这是我的代码,但它不工作 单击主活动上的“后退”按钮时 如何从主活动退出应用程序,包括在是按钮单击对话框上的注册活动

  • 我是Tkinter库的新手,我想知道当打开新窗口时如何禁用按钮。例如,如果单击主窗口上的按钮,将打开一个新窗口,并且主窗口上的所有按钮将被禁用。窗口关闭后,应重新启用按钮。 下面是我的代码示例: 额外:如果有人能告诉我如何在不关闭整个“Tkinter”程序的情况下关闭“root”窗口,我将不胜感激。例如,如果一个辅助窗口打开,我希望能够关闭第一个窗口,或者至少最小化它。