ActionBarCompat更改项目图标

时间:2012-07-11 15:44:32

标签: android android-actionbar compatibility android-actionbar-compat

我正在开发一个实现ActionbarCompat的API 7+应用程序。

目前我在ActionBar上有一个带有“收藏”图标的活动,我正试图找到一种方法来在喜欢和不喜欢之间切换图形。

我在onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected上玩的所有努力都失败了,看来图标只能在创建时更改,而不能在活动已经运行时更改。

有没有人在运行时遇到更改其中一个ActionBarCompat项目图标的方法,而使用ActionBarCompat可以看到活动,并且仍然保持与API 11 +上的本机ActionBars的兼容性?

2 个答案:

答案 0 :(得分:0)

您需要在onCreateOptionsMenu()中实现一些基本逻辑,用于检查项目是否受欢迎,并根据该逻辑更改图标。

setFavourite()方法中,您需要:

setFavourite() {
    ....
    if (changedFavourite)
       invalidateOptionsMenu()

请参阅此处的文档:http://developer.android.com/reference/android/app/Activity.html#invalidateOptionsMenu()

这应该强制ABS重绘。

答案 1 :(得分:0)

受@ mobinvent的评论启发我发现以下内容为HoneyComb前设备提供了ActionBarCompat选项菜单生命周期排序,依据HoneyComb及以上版本的invalidateOptionsMenu()。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) invalidateOptionsMenu();
else {
    supportInvalidateOptionsMenu();
    openOptionsMenu();
    closeOptionsMenu();
}

请注意打开选项菜单并关闭它的hacky要求。在我的特定实例中,我从onActivityResult中调用它,在此阶段似乎不会引入任何丑陋的菜单闪烁。

对ActionBar OS /设备进行预备好了!