我在菜单项中有一个书签图标。我想更改图标中的drawable,具体取决于之前是否按过书签。
我有两个标签,staro(意思是星橙)或starw(意思是星白)。我只是想在媒体上切换这个。
我如何知道public boolean onOptionsItemSelected(MenuItem item)
方法中图标中的哪个绘图。是否可以通过该项目了解drawable。我所知道的是item.getIcon()不是drawble。我无法将item.getIcon()
与R.drawable.starto
答案 0 :(得分:12)
你可以尝试
if (item.getIcon().getConstantState().equals(
getResources().getDrawable(R.drawable.starto).getConstantState()
)) {
...
}
如上所述here
答案 1 :(得分:1)
您可以在onPrepareOptionsMenu()中进行更改,每次在显示菜单之前调用该更改。它适合基于某些动态数据显示/隐藏选项。
如果您现在已经满足要求,可以直接致电
if (condition_for_orange) {
menu.findItem(resourceId).setIcon(R.drawable.staro);
} else {
menu.findItem(resourceId).setIcon(R.drawable.startw);
}
您可以使用共享首选项或其他可以存储状态的全局变量,这些变量可以帮助您决定现在显示哪个图标。
答案 2 :(得分:0)
你也可以比较这些。
您可以通过
找到可绘制的IDint identifier = getResources().getIdentifier("pic1", "drawable","android.demo");
然后你可以将它与R.drawable.starto
`进行比较。