要在 Android Honeycomb 及更高版本上使用上下文操作栏,我通常会检查是否为SDK_INT
11 或更高版本,然后继续mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
现在,通过 ActionBarSherlock,我正在尝试将其移植到旧设备上。现在我使用CHOICE_MODE_MULTIPLE
而不是CHOICE_MODE_MULTIPLE_MODAL
,在里面OnItemLongClickListener
,我设法调用getSherlockActivity().startActionMode(myActionModeCallback);
问题是,当我第一次长按 ListView 中的一个项目时,上下文操作栏会正确显示。
但是当我点击另一个 ListView 项目时,该项目被选中,然后它的点击监听器被触发。(我使用那个监听器,所以当用户点击一个项目时,它会打开一个新的活动,用户可以在其中编辑项目,所以在这种情况下,项目被选中,这个新活动立即开始,并破坏了我的上下文操作栏)
它不应该发生,但我想我做错了什么。我曾考虑将OnListItemClick
侦听器设置为 null,直到我调用ActionMode.finish()
可以将其恢复为前一个侦听器的位置,但我相信必须有一种更清洁的方法来做到这一点。