我已经成功地在 Fragment 中为 ListView 实现了 CAB,并且一切正常 -> 但是当我返回或通过抽屉导航更改显示的 fragment 时,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() 方法(如果您想在每次 fragment 暂停时关闭 CAB,也可以使用 onPause() ,但这可能会让用户感到厌烦):
@Override
public void onDestroy() {
super.onDestroy();
//Destroy action mode
if(actionMode != null)
actionMode.finish();
}
就是这样,现在每次替换 Fragment 时,都会取消 ActionMode。
关于android - 如何在 fragment 销毁方法上关闭 ListView 的上下文操作模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504045/