【发布时间】:2013-01-02 21:10:23
【问题描述】:
上下文:
- 我有一个简单的 ListActivity(称之为“Activity1”),其中包含一个 ListView 和许多菜单项。
- 单击 ListView 中的项目会显示一个弹出对话框。
- 单击 ActionBar 中的菜单项按钮(我们称之为“Button”)会启动一个 Activity(我们称之为“Activity2 ") 使用
startActivityForResult()
问题:如果用户触摸一个 ListView 项目,在 ListActivity 中生成一个onListItemClick() 事件,然后真正快速地触摸 Button,则一个onOptionsItemSelected() 事件被发送到消息队列并在正当的。这会导致以下奇怪的行为:
- 用户触摸 ListView 项
- 用户触摸按钮
- 用户在瞬间看到
onListItemClick()生成的对话框 -
Activity2 由
onOptionsItemSelected()启动,从对话框顶部开始 - 当用户完成 Activity2 后,他会返回对话框,而不是立即返回 Activity1强>
这是非常奇怪和令人不安的。根据我在旧的 GUI 框架中做 UI 的经验,GUI 框架从不允许第二个事件发布到队列中,所以你不必担心这些事情。
问题:是否有“首选”设计模式来阻止用户按下按钮并让它启动Activity2 当我的应用程序已经在显示一个对话框以响应 ListView 项目选择时?
禁用整个Activity1视图层次结构直到对话框结束??
【问题讨论】:
-
老鼠。这看起来像是 this issue 和 this issue 的欺骗,人们试图抑制按钮上的“双击”。
-
这是另一个处理相同问题的帖子:stackoverflow.com/q/11031814/1911388。
标签: android events user-interface click galaxy