как программно включить SwitchPreference на Android - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть фрагмент настроек, который загружает XML со страницей настроек по умолчанию, я также добавил прослушиватель одним щелчком к одному конкретному предпочтению

   @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.settings);
       preferences.findPreference(getString(R.string.pref_custom_list)).setOnPreferenceChangeListener(this);
//other stuff.....

, это прекрасно работает, когда пользователь нажимает кнопку запускает событие, и ямогу проверить некоторую информацию о переключателе, в том числе запретить изменение ...

Но я бы хотел включить / выключить другие переключатели на том же экране, когда это даже произошло

Я пытался

   preferences.findPreference(getString(R.string.xpto)).setEnabled(true);

но он не включает и не выключает никакие переключатели ... он просто включает или отключает вид для кликов

, если я делаю что-то вроде PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("xpto",true).apply();

Это меняет настройки, но изменения не загружаются на экран, поэтому пользователь не знает

как программно включить или отключить некоторые настройки и отразить их на экране настроек

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы ищете setChecked(), а не setEnabled():

preferences.findPreference(getString(R.string.xpto)).setChecked(true);
0 голосов
/ 30 ноября 2018

Я думаю, что вам нужно реализовать слушателя, когда SharedPreferences изменится.

SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
                       SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {
    // change the Switch Preference state here
    }
};

Затем, когда префы изменяются, вы можете изменить экран пользователя в соответствии с ним.

Для справки:

Как определить, были ли изменениясделано в настройках?

...