MenuItem's checked state is not shown correctly by its icon
According to the official document at http://developer.android.com/guide/topics/ui/menus.html
Note: Menu items in the Icon Menu (from the Options Menu) cannot display a checkbox or radio button. If you choose to make items in the Icon Menu checkable, you must manually indicate the checked state by swapping the icon and/or text each time the state changes.
Hope it helps.
If you still want to have the behavior (checked, not checked) defined in a xml drawable, this is one way you could accomplish this:
if (item.getItemId()==R.id.menu_item){
item.setChecked(!item.isChecked());
StateListDrawable stateListDrawable = (StateListDrawable) getResources().getDrawable(R.drawable.selector_drawable);
int[] state = {item.isChecked()?android.R.attr.state_checked:android.R.attr.state_empty};
stateListDrawable.setState(state);
item.setIcon(stateListDrawable.getCurrent());
}
A bit simpler way (without xml-states file):
configChecked = !configChecked;
item.setChecked(configChecked);
item.setIcon(configChecked ? R.drawable.check_on : R.drawable.check_off);