我从 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);
}
}
有你的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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)