获取ActionBar重绘自己?

时间:2012-02-22 14:37:10

标签: android

我想在运行时替换用于ActionBar项目的图标(它显示为ActionBar上的操作项)。我正在尝试以下方法:

private Map<Integer, Integer> mPendingReplacements = 
    new HashMap<Integer, Integer>();

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    for (Map.Entry<Integer, Integer> it : mPendingReplacements.entrySet()) {
        MenuItem item = menu.findItem(it.getKey().intValue());
        if (item != null) {
            item.setIcon(getResources().getDrawable(it.getValue().intValue()));
        }
    }
    mPendingReplacements.clear();

    return true;
}

private void replaceMenuItemIcon(int menuItemId, int drawable) {
    mPendingReplacements.put(menuItemId, drawable);
    invalidateOptionsMenu();
} 

private void onUserClickedSomeButton() {
    replaceMenuItemIcon(R.id.foo, R.drawable.grok);    
}

------------更新-----------

更新了以上示例,以按照Selvin的建议使用mPendingReplacements。我可以看到它执行为例外,但操作栏图标仍然不会立即更改。将继续深入探讨这一点,但如果我遗失了什么,有人能发现吗?

谢谢

0 个答案:

没有答案