0

上下文

  • 我有一个简单的 ListActivity(称之为“ Activity 1 ”),其中包含一个 ListView 和许多菜单项。
  • 单击 ListView 中的项目会显示一个弹出对话框。
  • 单击 ActionBar 中的菜单项按钮(我们称之为“ Button ”)启动一个 Activity(我们称之为“ Activity 2 ”),使用startActivityForResult()

问题:如果用户触摸了一个 ListView 项目,onListItemClick()在 ListActivity 中生成一个事件,然后真的很快地触摸了 Button,一个onOptionsItemSelected()事件会被发布到消息队列并在适当的时候进行处理。这会导致以下奇怪的行为:

  1. 用户触摸 ListView 项目
  2. 用户触摸按钮
  3. onListItemClick()用户在一瞬间看到生成的对话框
  4. Activity 2onOptionsItemSelected()从对话框顶部开始
  5. 当用户完成Activity 2时,他返回对话框,而不是立即返回Activity 1

这是非常奇怪和令人不安的。根据我在旧 GUI 框架中做 UI 的经验,GUI 框架从不允许第二个事件发布到队列中,因此您不必担心这些事情。

问题:当我的应用程序已经在显示对话框以响应 ListView 项目选择时,是否有“首选”设计模式可以防止用户按下Button并启动Activity 2 ?

禁用整个Activity 1视图层次结构,直到对话框结束??

4

1 回答 1

0

在您的服务条款中写下,每只手有 2 个拇指的用户应谨慎使用该应用程序。更严重的是,也许您可​​以在使用布尔值或Dialog.isShowing()开始您的活动之前检查您的对话框是否打开

于 2013-01-19T04:53:10.567 回答