我已经成功地在Fragment中为ListView实现了CAB,一切正常 - >但当我回击或当我通过导航抽屉改变显示的片段时,CAB保持打开状态。我需要做的是在onDestroy方法中关闭CAB。我试过这个:
listView.clearChoices();
listView.cancelLongPress();
但它对CAB没有影响。这里有解决方案吗?
答案 0 :(得分:7)
我发现如何处理这个很简单的方法:
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。
答案 1 :(得分:1)
这样的东西应该用于后退按钮:
@Override
public void onBackPressed() {
actionmode.finish(); // Replace with reference to your CAB.
}
您可以将相同的命令放入按钮逻辑中。