我的选项菜单中有一个麦克风按钮。当我点击它时,我希望它显示一个替代图像(红色麦克风)。
但它没有用。使用ResourcesNotFoundException失败。图像(png' s)肯定在相应的res文件夹中。
这是我的代码: 在活动中:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.ic_action_microphone :
MenuItem rec = m_menu.findItem(R.id.ic_action_microphone);
if (m_start) {
rec.setIcon(R.id.ic_action_microphone_active);
startRecording();
} else {
rec.setIcon(R.id.ic_action_microphone);
stopRecording();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在xml文件中:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/ic_action_microphone"
android:icon="@drawable/ic_action_microphone"
android:title="@string/action_microphone"
android:showAsAction="always"/>
<item android:id="@+id/ic_action_microphone_active"
android:icon="@drawable/ic_action_microphone_active"
android:title="@string/action_microphone"/>
</menu>
我做错了什么?
提前致谢
答案 0 :(得分:3)
请尝试此操作:通过提供可绘制资源文件夹中的图像来设置图标。
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.ic_action_microphone :
MenuItem rec = m_menu.findItem(R.id.ic_action_microphone);
if (m_start) {
rec.setIcon(R.drawable.ic_action_microphone_active);
startRecording();
} else {
rec.setIcon(R.drawable.ic_action_microphone);
stopRecording();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
您可能希望从drawable而不是id设置资源。我希望这会对你有所帮助。