这真的很奇怪。我第一次在 Eclipse 中启动应用程序并调用 startActionMode,一切正常。如果我关闭应用程序并再次打开它,则 startActionMode 返回 null。在我更改应用程序中的某些内容并从 Eclipse 再次运行它之前,它将始终返回 null。在文档中,它说如果 startActionMode 被取消,它会返回 null,但它没有解释为什么它被取消。
有任何想法吗?顺便说一句,我正在使用 actionbarsherlock
更新:如果我关闭手机或终止应用程序并再次启动应用程序,它可以工作......但是当我关闭它并再次打开它时会做同样的事情。
这是我的代码:ActionModeCallback 类:
class ActionModeCallback implements ActionMode.Callback{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextactiondownloads, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
};
在我的主要活动中:
public ActionMode startActionMode()
{
mActionMode = startActionMode(new ActionModeCallback());
return mActionMode;
}
在我的列表视图适配器中:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
MainActivity activity = (MainActivity)rowView.getContext();
if (isChecked) {
if(actionmode == null){
actionmode = activity.startActionMode();
}else
{
actionmode.invalidate();
}
}
else {
activity.finishActionMode();
actionmode=null;
}
}
});