Android, как отключить флажок во время длительной работы в PreferenceScreen - PullRequest
3 голосов
/ 23 января 2011

У меня есть этот PreferenceScreen, загруженный из XML.Дело в том, что когда я устанавливаю флажок, я запускаю службу, которой нужно около 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 Ответ

3 голосов
/ 23 января 2011
У

есть 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...