получить и установить listPreference из другого действия не работает - PullRequest
3 голосов
/ 26 мая 2011

Я пытаюсь получить и установить значение listPreference из разных действий, и оно не работает.

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

Я видел некоторые ссылки на сайте разработчика на CharSequence с getValue и getEntryValuesно мне не повезло заставить их работать правильно.

Вот мой код для нажатия кнопки и установки значения предпочтения списка, после чего запускается намерение переключать действия:

Основная активность, пытаясь установить значение listpreference на первое значение индекса;

        SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);
            SharedPreferences.Editor editor = settings.edit();

            editor.putString("ListPreferenceInXML", "1");
            editor.commit();

            String levelCheck = settings.getString("ListPreferenceInXML","1");

В моем следующем упражнении я вызываю чтение значения при запуске, чтобы увидеть, какая listPreference активна, и это всегда число, с которого я пишусетевая активность, указанная выше.Проблема заключается в том, что когда я перехожу к действию «Предпочтения», оно не совпадает или не обновляется, когда я изменяю его в ListPreference и запускаю то же действие оттуда (оно все равно считывает значение, заданное мной с помощью кнопки «Основное действие»)

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

    SharedPreferences settings = getSharedPreferences("PreferenceXML", 
                MODE_PRIVATE);

    Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();

1 Ответ

3 голосов
/ 28 мая 2011

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

   SharedPreferences settings = getSharedPreferences("PreferenceXML", 
            MODE_PRIVATE);

Назовите их так:

   SharedPreferences settings = 
        PreferenceManager.getDefaultSharedPreferences(getBaseContext());

Я не уверен, что в первом способе вызова предпочтений отсутствует шаг, но этот 2-й способ работал как чемпион.

...