这是我的实现,它是一个适当的 hack,但它有效,当单击 ActionMode DONE 时,我真的找不到做特定事情的替代方法。我觉得你不能更优雅地捕捉这个事件真的很奇怪。
任何使这个稍微不那么难看的建议将不胜感激......
在我的活动中..
boolean mActionModeIsActive = false;
boolean mBackWasPressedInActionMode = false;
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
mBackWasPressedInActionMode = mActionModeIsActive && event.getKeyCode() == KeyEvent.KEYCODE_BACK;
return super.dispatchKeyEvent(event);
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu)
{
mActionModeIsActive = true;
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode)
{
mActionModeIsActive = false;
if (!mBackWasPressedInActionMode)
onActionModeDoneClick();
mBackWasPressedInActionMode = false;
}
public void onActionModeDoneClick();
{
// Do something here.
}
如果您在 Activity 中使用 Fragments,那么其中一些代码可能需要在 Fragment 中,而其他位则在 Activity 中。
@JakeWharton(和其他 ActionBarSherlock 用户)如果您在旅行中看到这个。我很想知道以上内容是否与 ABS 兼容,因为我尚未将 ABS 与我当前的项目集成。