2012-08-09 174 views
5

我需要一个示例 - 教程如何激活和取消激活首选项活动中的元素。激活并取消激活首选项

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

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

enter image description here

+0

接受你的答案,如果它解决了问题 – 2013-07-14 15:30:14

回答

16

我们需要在从另一偏好取决于Android的喜好加入出来的preferences.xml文件 :依赖=“”代码。

例如:

 <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" /> 
0

当偏好活动的onResume方法检查无线网络连接状态启动,或任何你想和启用/禁用适当的偏好。

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

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

    if(isConnected) { 
    connPreference.setEnabled(false); 
    } else { 
    connPreference.setEnabled(true); 
    } 
} 
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,那么您也可以查看启用或禁用整个类别。

+0

什么是'prefField'?如何申报? – Bishan 2014-01-03 09:20:08

+0

prefField是您希望启用/禁用的任何首选项值。因此,对于PREFERENCE_KEY,我想要启用/禁用PREFERENCE_KEY_CHILD,因此prefField为PREFERENCE_KEY_CHILD。 – 2014-01-09 12:53:33

+0

感谢您的回复:) – Bishan 2014-01-10 03:15:12