如何设置标签为MenuItem?

Art*_*ans 12 android menuitem

我在android中构建一个弹出菜单,我需要在每个菜单项中存储一些ID.ID是String,因此如果我可以将一个String数组设置为MenuItem,那将是很好的.

问题是MenuItem没有setTag方法.

我怎么能附加一些数据呢?

编辑:Geobits提到了getActionView();

不幸的是,它返回null.

但是,执行以下操作是否省事?

 View view = new View(getActivity());
 view.setTag(tag);
 menuItem.setActionView(view);
Run Code Online (Sandbox Code Playgroud)

Geo*_*its 14

每个MenuItem都有一个View名为ActionView 的关联.如果您使用的是自定义ActionView,则可以使用它来获取它MenuItem.getActionView(),并在其上设置/检索标记.

例如,要设置标记:

public void setMenuItemTag(MenuItem item, Object tag)
{
    View actionView = item.getActionView();
    actionView.setTag(tag);
}
Run Code Online (Sandbox Code Playgroud)

编辑

如果您没有使用自定义ActionView,则可以使用HashMap存储标记.使用MenuItem作为键.

public void setMenuItemTag(MenuItem item, Object tag)
{
    myMap.put(item, tag);
}

// returns null if tag has not been set(or was set to null)
public Object getMenuItemTag(MenuItem item, Object tag)
{
    return myMap.get(item);
}
Run Code Online (Sandbox Code Playgroud)

  • getActionView返回null. (4认同)