我为我的Android应用程序设计了一个操作栏。在此操作栏中有一个按钮,用于启动用于配置应用行为的对话框活动。如果我双击这个按钮的速度足够快,我可以命令对话框活动在它实际出现之前启动两次,然后它出现重复和视觉重叠,我不希望这样。我尝试创建某种锁定机制,但它不起作用,因为只有在执行了Main Activity调用方法(onOptionsItemSelected)中的所有代码后,才启动Dialog Activity。有没有办法避免这种形式的发生?
我的代码是:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//ensure only one element from the option menu is launched at once (if you double click fast you could launch two)
Log.e("test", "onOptionsItemSelected ");
if(optionItemAlreadySelected == false)
{
optionItemAlreadySelected = true;
int id = item.getItemId();
if (id == R.id.action_sound_mode) {
//item.setVisible(false);
Intent intent = new Intent(this, SoundConfigurationActivity.class);
startActivity(intent);
optionItemAlreadySelected = false; //this code is executed before the activity is started!!!
return true;
}
}
return super.onOptionsItemSelected(item);
}
字符串
有没有一种方法可以知道对话框活动何时已经关闭,并锁定再次打开它的机会,直到那时。
3条答案
按热度按时间iugsix8n1#
Kotlin
这是一个基于屏幕(活动,片段)的解决方案,以避免双击菜单动作。
字符串
型
型
gt0wga4j2#
您可以使用布尔变量来跟踪
Dialog
的状态。单击按钮时,您将mDialogShown = true
设置为阻止任何其他show dialog请求。现在,当用户按下“返回”按钮并关闭对话框时,将调用ActivityResult。
此时,您可以确定对话框已关闭。
我假设你的代码在Activity中:
字符串
文件编制
https://developer.android.com/guide/topics/ui/dialogs.html#ActivityAsDialog
sr4lhrrt3#
你可以用flag检查,在片段或活动中设置var
字符串
制造新的乐趣
型
}