我已经在Fragment中成功实现了ListView的CAB,并且一切正常->但是当我回击或通过导航抽屉更改显示的片段时,CAB保持打开状态。我需要做的是在onDestroy方法中关闭CAB。我已经试过了:
listView.clearChoices();
listView.cancelLongPress();
但这对CAB无效。这里有什么解决方案吗?
最佳答案
我发现了一种非常简单的方法来处理此问题:
1)制作类型为ActionMode的全局变量:
ActionMode actionMode = null;
2a)在onCreateActionMode()方法中分配ActionMode:
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
getActivity().getMenuInflater().inflate(R.menu.action_mode, menu);
actionMode = mode;
return true;
}
2b)还将其放在onDestroyActionMode()方法中:
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
3)重写onDestroy()方法(如果您想在每次暂停片段时关闭CAB,也可以使用onPause(),但这可能会使用户感到烦恼):
@Override
public void onDestroy() {
super.onDestroy();
//Destroy action mode
if(actionMode != null)
actionMode.finish();
}
就是这样,现在每次您替换Fragment时,它将取消ActionMode。