вземете и задайте listPreference от друга дейност, която не работи

Опитвам се да получа и задам стойност на listPreference от различни дейности и не работи.

Когато го чета и пиша от основната си дейност, той запазва само всичко, което пиша, така че предполагам, че не насочвам правилно listPreference, когато съм извън дейността, защото работи в моята предпочитана дейност без проблем.

Виждал съм някои препратки на уебсайта на разработчиците към CharSequence с getValue и getEntryValues, но също нямах късмет да ги накарам да работят правилно.

Ето моят код за щракване върху бутон и задаване на стойността на listpreference, след което стартира намерение за превключване на дейности:

Основна дейност, опитвайки се да зададе стойността на listpreference на първата стойност на индекса;

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

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

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

В следващата си дейност извиквам read стойността при стартиране, за да видя кой listPreference е активен и винаги е числото, което пиша от основното действие, изброено по-горе. Проблемът е, когато отида до действителната активност на предпочитанията и тя не съвпада или се актуализира, когато я променя в ListPreference и стартирам същата дейност от там (все още чете стойността, която съм задал от бутона за основна дейност)

кодирайте както следва за дейност, която се опитва да прочете ListPreference:

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

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

person Toclmi    schedule 26.05.2011    source източник


Отговори (1)


Така че най-накрая го разбрах, проблемът беше в начина, по който извиквах предпочитанията. Вместо да извиквате предпочитанията по този начин, и в двата случая;

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

Наречете ги така:

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

Не съм сигурен дали има липсваща стъпка от първия начин за извикване на предпочитанията, но този 2-ри начин работи като шампион.

person Toclmi    schedule 28.05.2011