激活和停用首选项

时间:2012-08-09 07:47:39

标签: android android-preferences

我需要一个示例教程,如何激活和停用首选项活动中的元素。

例如,在下图中未选中Wi-Fi复选框时,我无法触摸网络通知复选框,它变为灰色,当选中Wi-Fi复选框后,我可以触摸另一个复选框。

如果启用了whi-fi复选框,我该如何填充添加Wi-Fi网络标签?

enter image description here

3 个答案:

答案 0 :(得分:16)

我们需要添加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" />

答案 1 :(得分: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,那么您也可能会启用或禁用整个类别。

答案 2 :(得分:0)

当首选项活动以onResume方法启动时,请检查wifi连接状态,或者您想要的任何内容,并启用/禁用相应的首选项。

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

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

   if(isConnected) {
     connPreference.setEnabled(false);
   } else {
     connPreference.setEnabled(true);
   }
}