您的位置:首页 > 其它

Prevent to cancel Action Mode by press back button

2016-06-24 16:58 309 查看
Action mode started by calling
getActivity().startActionMode(calback);
is automatically canceled after back button pressed. Is possible avoid this behavior? I need to do another operation after back button was pressed in some situation during
action mode.

This is an interesting problem. When the ActionMode is active the back key event is consumed internally. The event is
not propagated to either
onBackPressed()
or
onKeyUp(int keyCode, KeyEvent event)
callbacks.

Fortunately, you can use
dispatchKeyEvent(KeyEvent event)
which is still called.

@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);
}

You might wonder what will be the behavior in case you have a submenu in the ActionMode and you close it with the back key. In this case
dispatchKeyEvent()
is not called so you can safely use the code.

The above code works also with ActionBarSherlock. The only problem I found is on Android 3.1 device when the native ActionMode is used, in this case the
dispatchKeyEvent()
is not called. Use ActionBarSherlock's ActionMode to solve it.

转自:http://stackoverflow.com/questions/11725729/prevent-to-cancel-action-mode-by-press-back-button
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: