2012-08-09 221 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