我已经通过actionbarsherlock实现了一个actionmode(感谢jake沃顿的abs!).
不管怎样,我打电话给
mActionMode.invalidate();每次单击ListView项时,它也会递增/递减一个CheckedCounter。
然后在public booleanonPrepareActionMode(ActionMode mode, android.view.Menu menu)中,我必须根据checkedcounter的值设置actionmode内容。
onPrepareActionMode的代码如下:

    public boolean onPrepareActionMode(ActionMode mode,
                android.view.Menu menu) {
            Log.d("ASDASD", "INSIDE ONPREPARE!");
            if (mActionMode == null) {
                MenuInflater inflater = mode.getMenuInflater();
                inflater.inflate(R.menu.contextualmultiple, menu);
                return false;
            }
            if (checkedCount == 0) {
                mActionMode.finish();
            } else if (checkedCount == 1 && mActionMode != null) {
                mActionMode.setTitle(checkedCount + " Message Selected");
                MenuInflater inflater = mode.getMenuInflater();
                inflater.inflate(R.menu.contextualmultiple, menu);
                return true;
            } else if (checkedCount > 1) {
                mActionMode.setTitle(checkedCount + " Messages Selected");
                MenuInflater inflater = mode.getMenuInflater();
                inflater.inflate(R.menu.contextual, menu);
                return true;
            }
            return true;
        }

现在,问题是,当checkcount为1时,它会在菜单中添加3个项目。
但是,当计数器增加到2时,它会用1个项目对另一个菜单进行充气,但会添加到先前充气的菜单上,而不会首先取消内容。
也就是说,现在actionmode在上下文actionbar中有2个previous+1个current!
调用mActionMode.invalidate()时,如何更改代码以从actionmode中删除以前存在的菜单项?
注意:onCreateActionMode()函数是空的,因为onPrepareActionMode()会执行所有操作,包括当MactionMode为空并且有一个菜单要首次充气时。

最佳答案

哈哈!我找到了一个可笑的简单的解决办法!
对于其他任何可能遇到此问题的人,只需在所有inflate()语句之前添加一个menu.clear();语句,就这样!

10-08 07:51