Android:强制对话框主题 Activity 为模态

标签 android dialog

我们屏幕上的一个按钮会导致显示一个具有“对话”主题的 Activity 。我们遇到了一个问题,如果您连续快速单击按钮两次,对话框 Activity 将打开两次。

通常我希望当一个新 Activity 开始时,底层 Activity 立即停止,因此不再接受进一步的输入。

但是,由于对话框主题 Activity 不会占据整个屏幕,我认为底层 Activity 只是暂停,并没有停止,因此按钮仍然可以访问。

这让我想到了我的问题...有没有办法强制对话框主题 Activity 进入模态状态,在这种状态下用户无法单击下面 Activity 中的按钮?

我可能可以通过在 onPause 中禁用所有内容并在 onResume 中重新启用它来手动完成此操作,但这似乎需要很多工作!谁有更简单的解决方案?

最佳答案

沿着禁用事物的路线(这看起来很糟糕和错误),但如果没有真正的解决方案。可以通过按钮单击事件中的简单返回来完成禁用。只要您在对话框返回时或在 onResume 中重置 bool

boolean clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button b = (Button)findViewById(R.id.Button01);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (clicked)
                return;
            clicked = true;
            // show dialog
        }
    });
}

关于Android:强制对话框主题 Activity 为模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241589/

相关文章:

java - 未知变量或字段 imageURL

java - 安卓。如何获取图像可见部分的尺寸

java - Xperia 光传感器 [Xperia PRO]

android - Android 中具有透明背景的图像问题

java - "Open file..."对话框无法关闭

dialog - NSIS 为卸载程序使用选定的语言

dialog - 如何抑制不需要的 InstallShield InstallScript MSI 对话框?

jquery-mobile - 页面加载时的 jQuery Mobile 对话框

android - Kotlin 不会检查函数签名中具有某些返回类型的函数中的 return 语句

android - AutoCompleteTextView 强制显示所有项目或禁用过滤