2
创建ActionMode时未调用onPrepareActionMode
我刚刚完成了其中一个应用程序的调整,以适应新的v22.1.1支持和appcompat库,有关更多详细信息,请参见此处和此处。当我进行一些测试时,我使用的ActionModes出现了问题。 使用调用启动ActionMode时startSupportActionMode()-不会被调用,而使用现在不建议使用的ActionBarActivity基类或新的AppCompatActivity基类onPrepareActionMode()。 在onPrepareActionMode()最初使用创建ActionMode时,包括v21.0.3和v22.0.0在内的早期版本会自动调用startSupportActionMode()。 我在2.2、4.4.2和5.0的设备上进行了测试,因此它似乎与版本无关。 有人知道,如果这是预期的行为,则是在v22.1.1中引入的,或者是错误? 我发现了这个问题,但是这里没有很多反馈... 编辑2015年5月11日: 如Android问题跟踪器159527中所述,此问题不仅影响appcompat v22.1.x和支持库,还影响Android 5.1的实现。 目前有两种可能的临时解决方案,一种是通用的: @Override public ActionMode startSupportActionMode(final ActionMode.Callback callback) { // Fix for bug https://code.google.com/p/android/issues/detail?id=159527 final ActionMode mode = super.startSupportActionMode(callback); if (mode != null) { mode.invalidate(); } return mode; } 和“快速而肮脏的”(当您实例化ActionMode时): final ActionMode actionMode = startSupportActionMode(new MyActionMode()); if(actionMode != null) { actionMode.invalidate(); …