Android получает общие предпочтения для хранения пользовательских вариантов - PullRequest
0 голосов
/ 21 января 2012

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

Я думал, что можетбыть чем-то вроде fruit = getpreference (что-то вроде этого)

int resourceID = getResource.getIdentifier(fruit,"drawable",getPackageName());

favortieFruit.setImageResource(resourceID);

Options.java

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;

public class Options extends PreferenceActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.options);
        //Get the custom preference
        Preference customPref = (Preference) findPreference("listPref");
        customPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            public boolean onPreferenceClick(Preference preference) {

                SharedPreferences customSharedPreference = getSharedPreferences("Fruits", Activity.MODE_PRIVATE);
                SharedPreferences.Editor editor = customSharedPreference.edit();

                editor.commit();
                return true;
            }
        });
    }
}

Options.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="Fruit Selection" android:key="listPref">
                <ListPreference android:title="Fruit #1" android:key="listPref1" android:defaultValue="digiGreen" android:entries="@array/Fruits" android:entryValues="@array/listValues" android:summary="Select Fruit #1 "/><ListPreference
                        android:title="Fruit #2"
                        android:summary="Select Fruit #2 "
                        android:key="listPref2"
                        android:defaultValue="digiGreen"
                        android:entries="@array/Fruits"
                        android:entryValues="@array/listValues" /><ListPreference
                        android:title="Fruit #3"
                        android:key="listPref3"
                        android:defaultValue="digiGreen"
                        android:entries="@array/Fruits"
                        android:entryValues="@array/listValues" android:summary="Select Fruit #3 "/><ListPreference
                        android:title="Fruit #4"
                        android:key="listPref4"
                        android:defaultValue="digiGreen"
                        android:entries="@array/Fruits"
                        android:entryValues="@array/listValues" android:summary="Select Fruit #4 "/><ListPreference
                        android:title="Fruit #5"
                        android:key="listPref5"
                        android:defaultValue="digiGreen"
                        android:entries="@array/Fruits"
                        android:entryValues="@array/listValues" android:summary="Select Fruit #5 "/><ListPreference
                        android:title="Fruit #6"
                        android:key="listPref6"
                        android:defaultValue="digiGreen"
                        android:entries="@array/Fruits"
                        android:entryValues="@array/listValues" android:summary="Select Fruit #6 "/>
        </PreferenceCategory>
</PreferenceScreen>

strings.xml

<string-array name="Fruits">
   <item>Apple</item>
   <item>Pear</item>
   <item>Grape</item>
      <item >Berry</item>
        <item >Tomato</item>
</string-array>

<string-array name="listValues">
   <item>apple</item>
   <item>pear</item>
   <item>grape</item>
   <item>berry</item>
   <item>tomato</item>
</string-array>

============================== Найдено решение

Options.java

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Options extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);

    }
}

Получение настроек

SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(this);
        for (int num = 1; num < 7; num++) {

            String icon = sp.getString("listPref" + num, null);

            try {
                Class<drawable> res = R.drawable.class;
                Field field = res.getField(icon);
                PoliticiansArray[num] = field.getInt(null);
                Class<string> stringRes = R.string.class;
                Field stringField = stringRes.getField(icon);
                SayingsArray[num] = stringField.getInt(null);

            } catch (Exception e) {
                Log.e("MyTag", "Failed", e);
            }

1 Ответ

1 голос
/ 21 января 2012

Вы должны добавить PreferenceChangeListener к вашему ListPreference

Это пример того, как получить новое выбранное значение из ListPreference:

final ListPreference myPreference = (ListPreference) findPreference("listPref");
    myPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        // @Override
        public boolean onPreferenceChange(Preference preference,
                Object newValue) {
            SharedPreferences customSharedPreference = getSharedPreferences("Fruits", Activity.MODE_PRIVATE);
            SharedPreferences.Editor editor = customSharedPreference.edit();
            editor.putString("favfruit", (String) newValue);
            editor.commit();
            return true;
        }
    });

Когда вычтобы получить обратно значение, которое вы сохранили в SharedPreferences, сделайте это следующим образом:

SharedPreferences settings = getSharedPreferences("Fruits", Activity.MODE_PRIVATE);
String fruit= settings.getString("favfruit",null);

Затем получите чертеж:

int resourceID = getResource.getIdentifier(fruit,"drawable",getPackageName());
favortieFruit.setImageResource(resourceID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...