我已经通过 ActionBarSherlock 实现了一个 ActionMode(感谢 Jake Wharton 的 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 个项目膨胀另一个菜单,但是会添加到先前膨胀的菜单上,而不会首先使内容无效。IE; 现在 ActionMode 在 Contextual ActionBar 中有 2 of previous + 1 of current !
调用时如何更改我的代码以从 ActionMode 中删除以前存在的菜单项mActionMode.invalidate()
?
PS:onCreateActionMode() 函数是空的,因为 onPrepareActionMode() 会做所有事情,包括当 mActionMode 为空并且第一次有菜单要膨胀时。