5

我需要一个示例教程如何激活和停用偏好活动中的元素。

For example in the picture below when the Wi-Fi check box is unselected I can not touch the Network notification check box and it turns gray, when the Wi-Fi check box is selected then I can touch the other check box.

另外,当启用 whi-fi 复选框时,如何填充添加 Wi-Fi 网络选项卡?

在此处输入图像描述

4

3 回答 3

17

我们需要在首选项中添加preferences.xml 文件,该首选项取决于另一个首选项android:dependency="" 代码。

例如 :

        <CheckBoxPreference
            android:key="checkBox"
            android:summary="On/Off"
            android:title="Enable" />

        <ListPreference
            android:entries="@array/listOptions"
            android:entryValues="@array/listValues"
            android:key="listpref"
            android:summary="List preference example"
            android:title="List preference"
            android:dependency="checkBox" />
于 2012-08-09T08:00:35.140 回答
6

您的偏好活动应该实施OnSharedPreferenceChangeListener。请务必向侦听器注册和取消注册活动。

然后在onResume()onSharedPreferenceChanged方法中评估控制偏好的状态以确定是否应该启用或禁用依赖偏好。

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        final String key) {
    if (key.equals(PREFERENCE_KEY)) {
        // handle setting enabled or disabled depending on value of preference
        if (sharedPreferences.getBoolean(key, false)) {
            // prefField.setenabled(true);
        } else {
            // prefField.setenabled(false);
        }

    }
}

如果您还使用 PreferenceCategory,那么您可能还希望启用或禁用整个类别。

于 2012-08-09T09:52:37.887 回答
0

当偏好活动在 onResume 方法中开始时,检查 wifi 连接状态,或者任何你想要的并启用/禁用适当的偏好。

它可能看起来类似于这个简单的例子,只是为了给你一个大致的想法。

@Override
protected void onResume() {
   super.onResume();
   boolean isConnected = getConnectionStatus();

   if(isConnected) {
     connPreference.setEnabled(false);
   } else {
     connPreference.setEnabled(true);
   }
}
于 2012-08-09T08:07:41.127 回答