【问题标题】:Android block screen when opening dialog or second dialog instance打开对话框或第二个对话框实例时Android会阻止屏幕
【发布时间】:2014-05-19 08:40:20
【问题描述】:

我有一个从当前片段打开的扩展 DialogFragment。 最近我发现可以单击导致对话框在短时间内打开两次的元素,它会强制打开两个对话框。这是我的应用程序的意外行为。我想让可能只打开一个对话框实例。我做错了什么?

下面是我打开对话框的代码。

public boolean onActionItemSelected(int menuId) {

    switch (menuId) {
        case R.id.action_change_passcode:
            pinChangeFlag = true;
            AbstractPinDialog pinChangeFirstDialog = new StandardPinDialog(this);
            pinChangeFirstDialog.show(getFragmentManager(), StandardPinDialog.class.getName());
            return true;
            //... other cases
    } 
}

【问题讨论】:

  • Id action_change_passcode a Button?
  • @Apoorv 这是来自 ActionBar 的项目代码

标签: android android-fragments dialog


【解决方案1】:

一个简单的方法是设置一个全局布尔标签,如

isDialogVisible=false;

当您显示对话框时,将其值设置为 true。在显示该对话框之前检查

if(! isDialogVisible){
    dialog.show();
}

所以只会出现一个对话框。

或者第二种方法是检查对话框的视图是否已经创建,然后使用类似的逻辑不显示第二个对话框。

【讨论】:

  • 是的,这个解决方案很明确,谢谢。也许这里有一些预定义的触发器?
  • 你将如何检查对话框是否被用户关闭?通过在目标 DialogFragment 中实现关闭侦听器?
  • 关闭对话框的地方,再次设置isDialogVisible=false即可。 isDialogVisible 是一个全局变量
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多