Android项目组android:checkableBehavior =“single”

时间:2016-11-10 15:27:35

标签: android user-interface menuitem

我想根据某些不断变化的程序状态以编程方式设置组的单选按钮。

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的状态永远不会更新。

0 个答案:

没有答案