【发布时间】:2012-10-03 11:46:34
【问题描述】:
可能重复:
How to invoke the ActionBar's ContextMenu-like behavior?
How to recognize whether the Done button is clicked in ActionMode
如何正确处理动作模式“完成”按钮?
我在动作模式下对一个对象执行一些操作,我想通过单击此按钮来保存结果 - 例如“保存并退出”。 如何在此按钮上分派按键?
我看到的唯一方法是使用标志覆盖 onDestroyActionMode(ActionMode mode) 方法,在 dispatchKeyEvent(KeyEvent event) 中触发以处理是否是由“返回”按钮按下引起的。
Logcat:
按下“完成”
10-03 14:31:58.211: D/DESTROY(967): onDestroyActionMode
按下“返回”
10-03 14:32:01.771: D/DISPATCH(967): Action: 0/n Keykode: 4
10-03 14:32:01.911: D/DISPATCH(967): Action: 1/n Keykode: 4
10-03 14:32:01.911: D/DESTROY(967): onDestroyActionMode
但这看起来不是好的做法。 有什么“不错”的解决方案吗?
UPD:我知道如何在 ActionMode.Callback 中调用动作模式和处理动作项事件,但是我如何捕捉“完成”按钮按下来修改它的行为?“返回”按钮和“完成”按钮会导致ActionMode.Callback 的onDestroyActionMode() 调用。
【问题讨论】:
-
为什么要重复?
-
这不是重复的。似乎没有可能/简单的方法来做到这一点,查看 ActionBarSherlock 包含完成按钮调用的视图直接完成,没有参数。修改 ABS 是可能的,但是它不会起作用,因为 ABS 回退到 3.0 以上的原生。这是谷歌的愚蠢疏忽。 (编辑:是的,这是一个骗子:stackoverflow.com/questions/11642877/…)
-
看起来这对于普通的ActionBar是可能的。 dazcorp.blogspot.com/2013/04/…
-
您可以使用普通的 ActionBar、自定义视图和按钮本身的布局代码(来自库存联系人应用程序):github.com/android/platform_packages_apps_contacts/blob/master/…
-
stackoverflow.com/questions/11725729/… 这个问题可以回答你所面临的问题。
标签: android android-actionbar actionbarsherlock contextual-action-bar