Android如何在PreferenceScreen中长时间操作期间禁用复选框

时间:2011-01-23 16:32:32

标签: android checkbox

我从xml加载了这个PreferenceScreen。 事情就是当我切换复选框时启动服务withs 需要5-10秒才能连接到服务器。 如何在此期间禁用此复选框。 由于布局膨胀,我无法看到如何获取checkbox.setEnable = false?

<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);
}

}

1 个答案:

答案 0 :(得分: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);