我想根据某些不断变化的程序状态以编程方式设置组的单选按钮。
XML文件是这样的:
<item android:id="@+id/silent_mode" android:title="@string/silent_mode" >
<menu>
<group android:checkableBehavior="single" android:id="@+id/silent_on_off">
<item android:id="@+id/silent_mode_on"
android:checked="false"
android:title="@string/silent_mode_on_text"
/>
<item android:id="@+id/silent_mode_off"
android:checked="true"
android:title="@string/silent_mode_off_text" />
</group>
</menu>
</item>
然后我希望根据变量的某些状态更新slient_mode_on或slient_mode_off,假设名为isSilentMode的布尔变量。 isSlientMode是一个随时更改的变量。有一个后台服务,每5分钟检查一次。如果isSlientMode变为true,那么我想设置slient_mode_on.setSelected(true),否则将其设置为false。
我尝试设置MenuItem,但根本没有响应。该项目保持与用户先前选择的状态相同,并且不会根据某些程序更改进行更新。
如何处理?
public static void updateSilentModeCheckbox() {
if (mainMenu!=null) {
MenuItem itemOn = mainMenu.findItem(R.id.silent_mode_on);
MenuItem itemOff = mainMenu.findItem(R.id.silent_mode_off);
Log.i("MainActivity", itemOn.isChecked() + " " + isSilentMode + " ");
if (itemOn.isChecked() && isSilentMode) {
// silentModeOn, itemOnChecked, doNothing
} else if (itemOn.isChecked() && !isSilentMode) {
itemOff.setChecked(true);
itemOn.setChecked(false);
} else if (!itemOn.isChecked() && isSilentMode) {
itemOn.setChecked(true);
itemOff.setChecked(false);
} else if (!itemOn.isChecked() && isSilentMode) {
// doNothing
}
Log.i("MainActivity", itemOn.isChecked() + " " + isSilentMode + " ");
}
}
我发现itemOn和itemOff的状态永远不会更新。