我需要一个示例教程,如何激活和停用首选项活动中的元素。
例如,在下图中未选中Wi-Fi复选框时,我无法触摸网络通知复选框,它变为灰色,当选中Wi-Fi复选框后,我可以触摸另一个复选框。
如果启用了whi-fi复选框,我该如何填充添加Wi-Fi网络标签?
答案 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);
}
}