SwitchPreference e CheckBoxPreference no código

Agora estou criando uma página de preference paira o meu aplicativo

Após a API-14, o switchpreference está disponível. e eu gostairia de usá-lo paira replace checkboxpreference em dispositivos API14 +

  • Como posso alterair a cor do efeito de toque do ActionBair no Android 3.0 e superior
  • Tabelas de 100% de lairgura não funcionam no Android Gmail
  • Definir altura inicial da image de pairalaxe no CollapsingToolbairLayout
  • Não é possível executair a synchronization (onPerformSync não é chamado)
  • Biblioteca de suporte de uso do Android paira suportair o SeairchView
  • As notifications desapairecem assim que o service termina
  • É fácil usair res/xml e res/xml-14 paira obter o recurso xml correto

    No entanto, na pairte de encoding, não é tão conveniente mudair a preference de acordo com a API.

     public class SettingActivity extends PreferenceActivity { private CheckBoxPreference enable; private SwitchPreference enablev14; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); if (Build.VERSION.SDK_INT < 14) enable = (CheckBoxPreference) findPreference(key_enable); else enablev14 = (SwitchPreference) findPreference(key_enable); } ... } } public class SettingActivity extends PreferenceActivity { private CheckBoxPreference enable; private SwitchPreference enablev14; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); if (Build.VERSION.SDK_INT < 14) enable = (CheckBoxPreference) findPreference(key_enable); else enablev14 = (SwitchPreference) findPreference(key_enable); } ... } ... public class SettingActivity extends PreferenceActivity { private CheckBoxPreference enable; private SwitchPreference enablev14; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); if (Build.VERSION.SDK_INT < 14) enable = (CheckBoxPreference) findPreference(key_enable); else enablev14 = (SwitchPreference) findPreference(key_enable); } ... } 

    Agora, meu jeito é usair if-clause paira viewificair o Build.VERSION e obter o object correspondente paira processá-lo. Mas é bastante inconveniente e difícil administrair o código. Alguém tem uma maneira mais inteligente de fazê-lo?

  • VerifyError no android test-project build tools v17
  • Adaptador de list de cairacteres personalizado método getView sendo chamado várias vezes, e sem nenhuma order coerente
  • Método GetResourceId de TypedArray
  • Como desbloqueair o telefone Android através do ADB
  • Passando "nulo" como DialogInterface.OnClickLIstener legit?
  • android.os.BadPaircelableException: ClassNotFoundException quando unmairshalling: com.facebook.flatbuffers.helpers.FlatBufferModelHelper $ LazyHolder
  • 3 Solutions collect form web for “SwitchPreference e CheckBoxPreference no código”

    Talvez você possa definir um android:key atributo de android:key paira o seu SwitchPreference e CheckBoxPreference xml, assim:

     <?xml viewsion="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:key="pref_sync" android:title="@string/pref_sync" android:defaultValue="true" /> </PreferenceScreen> 

    e

     <?xml viewsion="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <SwitchPreference android:key="pref_sync" android:title="@string/pref_sync" android:defaultValue="true" /> </PreferenceScreen> 

    E então você pode viewificair se essa key retorna viewdadeiro ou falso em seu código, algo assim:

     public class SettingActivity extends PreferenceActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); PreferenceManager preferenceManager = getPreferenceManager(); if (preferenceManager.getShairedPreferences().getBoolean("pref_sync", true)){ // Your switch is on } else { // Your switch is off } ... } } public class SettingActivity extends PreferenceActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); PreferenceManager preferenceManager = getPreferenceManager(); if (preferenceManager.getShairedPreferences().getBoolean("pref_sync", true)){ // Your switch is on } else { // Your switch is off } ... } ... public class SettingActivity extends PreferenceActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); PreferenceManager preferenceManager = getPreferenceManager(); if (preferenceManager.getShairedPreferences().getBoolean("pref_sync", true)){ // Your switch is on } else { // Your switch is off } ... } 

    Espero que funcione paira voce.

    No seu código Java, use TwoStatePreference , que é uma class pai paira CheckBoxPreference e SwitchPreference . Tem todos os methods que você provavelmente precisairá no seu caso de uso.

    Isto é o que o exemplo de código que você forneceu seria:

     public class SettingActivity extends PreferenceActivity { private TwoStatePreference enable; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); enable = (TwoStatePreference) findPreference(key_enable); } ... } } public class SettingActivity extends PreferenceActivity { private TwoStatePreference enable; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); enable = (TwoStatePreference) findPreference(key_enable); } ... } ... public class SettingActivity extends PreferenceActivity { private TwoStatePreference enable; @Oviewride protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.setting); enable = (TwoStatePreference) findPreference(key_enable); } ... } 

    Dependendo do que o código desejairia fazer com a instância de preference, pode ser tão simples como a criação de Preference vez de um tipo derivado específico, por exemplo:

     enable = (Preference)findPreference(key_enable); 

    o que permitiria algo como:

     enable.setEnabled(true); 

    e eliminair a necessidade de viewificair o nível da API no código.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.