从兼容性片段添加/更改兼容性SimpleMenu / MenuItem

时间:2012-02-02 06:15:14

标签: android compatibility android-menu android-actionbar

我意识到这是一个特定的问题,但我觉得其他处理兼容性问题的人必须处理这个问题。

当用户在ViewPager中浏览各种片段时,我还希望actionBar菜单项能够更改。我不确定这对compatibility actionbar是否容易实现,任何方向或帮助都会非常感激。我只是通过setTitle()更改标题,因为ActionBarHelper处理这个,但我无法找到更新菜单项的任何内容。我尝试了以下但它失败了..

public void setMenuDynamically(int resId){
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(resId, menu);
}

查看代码,似乎应该有一个简单/明显的方法来获取SimpleMenu的句柄并添加一个项目并设置其图标。

提前致谢(我希望谷歌男孩们正在阅读这个Android开发者推荐的Google+)

1 个答案:

答案 0 :(得分:1)

好的,请让我知道,如果我吮吸描述的东西,或者是否对此主题知之甚少。如果第一个我真的很抱歉。无论我似乎让这个工作,但我不确定这是否是正确的方法。

AcitonBarHelper

    public void updateMenu(MenuItem item) {
}

ActionBarHelperBase(适用于2.2 - 3.0设备)

@Override
public void updateMenu(MenuItem item){
    addActionItemCompatFromMenuItem(item);
}

为蜂窝和ICS创建类似的方法

最后我有一个改变页面的监听器,在那个监听器中我打电话给...

public void setMenuDynamically(int resId, String title){
    MenuItem item = menu.add(title);
    item.setIcon(resId);
    getActionBarHelper().updateMenu(item);
    MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}

我不确定MenuItemCompat是否有必要,但我还是把它包括在内。到目前为止,一切似乎都非常适合2.2。我很可能不得不在Overrides中进行更改,但我可以从这里处理自己。