【问题标题】:Android ActionMode replace Action Items dynamicallyAndroid ActionMode 动态替换 Action Items
【发布时间】:2012-10-04 18:16:48
【问题描述】:

我已经通过 ActionBarSherlock 实现了一个 ActionMode(感谢 Jake Wharton 的 ABS!)。

无论如何,我打电话给 mActionMode.invalidate(); 每次我点击一个 ListView 项目时,它也会增加/减少一个checkedCounter。

那么在 public boolean onPrepareActionMode(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 个先前的 + 1 个当前的!

当调用mActionMode.invalidate() 时,如何更改我的代码以从 ActionMode 中删除以前存在的菜单项?

附: : onCreateActionMode() 函数是空的,因为 onPrepareActionMode() 会做所有事情,包括当 mActionMode 为 null 并且第一次有菜单要膨胀时。

【问题讨论】:

    标签: android android-actionbar actionbarsherlock


    【解决方案1】:

    哈哈!我找到了一个非常简单的方法来解决这个荒谬的问题!

    对于可能遇到此问题的任何其他人,只需在所有 inflate() 语句之前添加一个 menu.clear(); 语句,就是这样!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-16
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多