我有一个操作栏,其中包含一个项目shuffle_action
。
我在onOptionsItemSelected(MenuItem item)
函数中使用过以下情况。
switch (item.getItemId()){
case R.id.action_shuffle:
if(MusicService.shuffle) {
item.setChecked(false);
Toast.makeText(this,String.valueOf(item.isChecked()),
Toast.LENGTH_SHORT).show();// returns false
musicService.clearShuffle();
}
else {
item.setChecked(true);
Toast.makeText(this,String.valueOf(item.isChecked()),
Toast.LENGTH_SHORT).show();// returns true
}
musicService.setShuffle();
break;
}
现在这件事情完美无缺,因为我想让它发挥作用。
<item
android:id="@+id/action_shuffle"
android:icon="@drawable/shuffle_drawable"
android:title="Shuffle"
app:showAsAction="ifRoom"
android:checkable="true"
android:checked="false"
/>
shuffle_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/shuffle_pressed"/>
<item
android:state_checked="false"
android:drawable="@drawable/ic_shuffle_black_18dp"/>
</selector>
问题在于,当州改变时,抽屉不会发生变化。为什么会发生这种情况?