我已经从xml加载了这个PreferenceScreen。问题是,当我打开复选框时,启动服务需要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);
}}
发布于 2011-01-24 01:39:46
让你的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);https://stackoverflow.com/questions/4774916
复制相似问题