2011-01-23 37 views
3

我從xml加載此PreferenceScreen。 事情是當我切換複選框即時啓動一個服務與 需要5-10秒連接到服務器。 如何在此期間禁用複選框。 由於佈局膨脹,我不能看到如何獲得checkbox.setEnable = false?Android如何在PreferenceScreen的長時間操作期間禁用複選框

<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference 
    android:key="checkBoxenableincomingcall" 
    android:title="Enable incoming call" 
    android:defaultValue="true" 
    android:summary="hasse running as background service" /> 
<CheckBoxPreference 
    android:key="checkBoxmakephoneringonincoming" 
    android:title="Dont ring on message" 
    android:defaultValue="true" 
    android:summary="dont disturb me" /> 
<EditTextPreference 
    android:key="edittexvalue" 
    android:title="EditText" 
    android:summary="EditTextPreference" /> 

public class EditPreferences extends PreferenceActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.preferences); 
} 

}

回答

3

有你PreferenceActivity實施OnPreferenceChangeListener,然後用它註冊您的複選框。當你發現它已經被按下禁用偏好

//in onCreate 
findPreference("checkboxpreferencekey").setOnPreferenceChangeListener(this); 


public boolean onPreferenceChange(Preference preference, Object newValue){ 
    if(preference.getKey().equals("checkboxpreferencekey")){ 
     preference.setEnabled(false); 
     return true; 
    } 
    else return true; 
} 

這是你可以禁用它,你仍然需要某種回調或服務廣播知道何時再次啓用它。但是當它的時間你以同樣的方式做。

findPreference("checkboxpreferencekey").setEnabled(true); 
+0

謝謝是的資源。 – Erik 2011-01-23 19:09:57