我正在开发一个实现ActionbarCompat的API 7+应用程序。
目前我在ActionBar上有一个带有“收藏”图标的活动,我正试图找到一种方法来在喜欢和不喜欢之间切换图形。
我在onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected上玩的所有努力都失败了,看来图标只能在创建时更改,而不能在活动已经运行时更改。
有没有人在运行时遇到更改其中一个ActionBarCompat项目图标的方法,而使用ActionBarCompat可以看到活动,并且仍然保持与API 11 +上的本机ActionBars的兼容性?
答案 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 /设备进行预备好了!