上下文:
- 我有一个简单的 ListActivity(称之为“ Activity 1 ”),其中包含一个 ListView 和许多菜单项。
- 单击 ListView 中的项目会显示一个弹出对话框。
- 单击 ActionBar 中的菜单项按钮(我们称之为“ Button ”)启动一个 Activity(我们称之为“ Activity 2 ”),使用
startActivityForResult()
问题:如果用户触摸了一个 ListView 项目,onListItemClick()
在 ListActivity 中生成一个事件,然后真的很快地触摸了 Button,一个onOptionsItemSelected()
事件会被发布到消息队列并在适当的时候进行处理。这会导致以下奇怪的行为:
- 用户触摸 ListView 项目
- 用户触摸按钮
onListItemClick()
用户在一瞬间看到生成的对话框- Activity 2由
onOptionsItemSelected()
从对话框顶部开始 - 当用户完成Activity 2时,他返回对话框,而不是立即返回Activity 1
这是非常奇怪和令人不安的。根据我在旧 GUI 框架中做 UI 的经验,GUI 框架从不允许第二个事件发布到队列中,因此您不必担心这些事情。
问题:当我的应用程序已经在显示对话框以响应 ListView 项目选择时,是否有“首选”设计模式可以防止用户按下Button并启动Activity 2 ?
禁用整个Activity 1视图层次结构,直到对话框结束??