首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PreferenceScreen中长时间操作期间禁用复选框

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

Stack Overflow用户
提问于 2011-01-24 00:32:32
回答 1查看 4K关注 0票数 3

我已经从xml加载了这个PreferenceScreen。问题是,当我打开复选框时,启动服务需要5-10秒才能连接到服务器。如何在此期间禁用复选框。由于布局是膨胀的,我看不到如何获取checkbox.setEnable = false?

代码语言:javascript
复制
<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" />

代码语言:javascript
复制
public class EditPreferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.preferences);
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-24 01:39:46

让你的PreferenceActivity实现OnPreferenceChangeListener,然后用它注册你的复选框。当您检测到它已被按下时,禁用该首选项

代码语言:javascript
复制
//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;
}

这就是禁用它的方法,您仍然需要从您的服务中进行某种回调或广播,才能知道何时再次启用它。但到了时候,你也是这样做的。

代码语言:javascript
复制
findPreference("checkboxpreferencekey").setEnabled(true);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4774916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档