我有一个ListView,当用户长按任何特定项目时,CAB启动。
我正在使用,
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
和MultiChoiceModeListener拦截回调,
getListView().setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.contextual_menu, menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
// TODO Auto-generated method stub
}
});
现在,在我的onResume()(在这个监听器之外),我想检查我的ActionMode是否可见/不可见,如果是,那么根据某些条件,我想手动禁用/启用它。
我该怎么做?
答案 0 :(得分:2)
我等了一天但没有得到任何答案并自己解决了。我不知道这种方法是否完美。
声明一个字段ActionMode
ActionMode mActionMode;
现在在onCreateActionMode()方法中,你得到了ActionMode,
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mActionMode = mode;
}
在onDestroyActionMode()中,
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
现在代码中的任何地方只检查mActionMode是否为null,以检查ActionMode是启用还是禁用。
希望这会有所帮助。如果您有更好的解决方案,请发布答案。