2015-02-16 1 views
0

В настоящее время у меня проблема с отключенным флажком, который включен в preference.xml. Это произошло после перехода на Metarial design. Я попытался включить представление программно, но это не помогло.Android checkboxpreference отключен, хотя он включен в XML

(Я хотел бы показать скриншот, но моя репутация не высока, но достаточно: /)

мой preference.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

    <PreferenceCategory android:title="Network Service" > 

     <CheckBoxPreference 
      android:enabled="true" 
      android:key="@string/communication_option" 
      android:selectable="true" 
      android:defaultValue="true" 
      android:shouldDisableView="false" 
      android:summary="Allows down- and upload." 
      android:title="Enable server communication" /> 

     <CheckBoxPreference 
      android:disableDependentsState="false" 
      android:enabled="true" 
      android:dependency="@string/communication_option" 
      android:key="@string/wifi_sync_option" 
      android:selectable="true" 
      android:defaultValue="true" 
      android:shouldDisableView="true" 
      android:summary="Do not use mobile bandwidth to download" 
      android:title="WiFi synchronization only" /> 

    </PreferenceCategory> 
</PreferenceScreen> 

мой preferenceFragment

public class FragmentPreference extends PreferenceFragment implements 
    SharedPreferences.OnSharedPreferenceChangeListener { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.preferences); 

    // added to make sure it really is enabled 
    CheckBoxPreference cbp = (CheckBoxPreference) getPreferenceManager() 
      .findPreference(getString(R.string.communication_option)); 
    cbp.setEnabled(true); 
    cbp.setShouldDisableView(false); 

} 

Я используя тему Theme.AppCompat.Light.NoActionBar, чтобы добавить новую панель инструментов.

Еще одна вещь, которую я заметил, - это то, что предпочтение отображается так, как показано на экране, так как ориентация экрана меняется на ландшафт, и хотя предпочтение отображается как отключенное, предпочтение все еще можно щелкнуть/проверить/снять флажок.

ответ

2

После нескольких проб и ошибок я узнал, что перегрузил настройки. громоздкая и многое версии уборщика, который работает выглядит следующим образом:

<PreferenceCategory android:title="Network Service" > 

    <CheckBoxPreference 
     android:key="@string/communication_option" 
     android:defaultValue="true" 
     android:summary="Allows down- and upload." 
     android:title="Enable server communication" /> 

    <CheckBoxPreference 
     android:dependency="communication_option" 
     android:key="@string/wifi_sync_option" 
     android:defaultValue="true" 
     android:summary="Do not use mobile bandwidth to download" 
     android:title="WiFi synchronization only" /> 

</PreferenceCategory> 

и

public class FragmentPreference extends PreferenceFragment implements 
      SharedPreferences.OnSharedPreferenceChangeListener {  

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      // Load the preferences from an XML resource 
      addPreferencesFromResource(R.xml.preferences); 
     } 
} 
0

Вы должны установить значения по умолчанию для вас в своей основной деятельности onCreate.

PreferenceManager.setDefaultValues(this, R.xml.pref_general, false); 
+0

Вы можете сделать комментарий, его просто предложение – Apurva

+0

слишком плохо, это предложение не решает проблему: / – Takeya