ATo*_*Tom 15 android android-actionbar
getActivity().startActionMode(calback);按下后退按钮后,通过呼叫启动的操作模式将自动取消.有可能避免这种行为吗?在动作模式下,在某些情况下按下后退按钮后,我需要再做一次操作.
Tom*_*mik 31
这是一个有趣的问题.当ActionMode处于活动状态时,后退键事件将在内部使用.事件不会传播到任何一个onBackPressed()或onKeyUp(int keyCode, KeyEvent event)回调.
幸运的是,你可以使用dispatchKeyEvent(KeyEvent event)仍然被调用的.
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(mActionModeIsActive) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
// handle your back button code here
return true; // consumes the back key event - ActionMode is not finished
}
}
return super.dispatchKeyEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
您可能想知道在ActionMode中有子菜单并使用后退键关闭它时会出现什么行为.在这种情况下dispatchKeyEvent()不会调用,因此您可以安全地使用代码.
上面的代码也适用于ActionBarSherlock.我发现的唯一问题是在使用原生ActionMode时在Android 3.1设备上,在这种情况下,dispatchKeyEvent()不会调用它.使用ActionBarSherlock的ActionMode来解决它.
| 归档时间: |
|
| 查看次数: |
8386 次 |
| 最近记录: |