Живые обои openGL с использованием SharedPreferences

Я создал живые обои для Android с помощью openGL. Он отлично работает. Теперь я хочу установить настройки в своих живых обоях, используя общие настройки. Я не знаю, как получить значение настроек.

Может ли кто-нибудь сказать мне, как я могу получить значение общих настроек и использовать его для рендеринга сферы. Это мои настройки xml,

    <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ListPreference
    android:entryValues="@array/textureitems_values"
    android:entries="@array/textureitems"
    android:summary="Select rotation speed"
    android:title="Rotation Speed"
    android:key="rotspeed"
    >
</ListPreference>
<ListPreference
    android:entryValues="@array/planetitems_values"
    android:entries="@array/planetitems"
    android:summary="Select Planet"
    android:title="Planet"
    android:key="moreapps"
    >
</ListPreference>
<ListPreference
    android:entryValues="@array/timeitems_values"
    android:entries="@array/timeitems"
    android:summary="Select time"
    android:title="Time"
    android:key="time"
    >
</ListPreference>

<Preference android:title="More Apps" android:summary="To want more apps like this" android:key="mypref" />

From which class I can get the preference value and apply those values to render?

EDIT: Это код, который я пробую, это в сервисе обоев,

      class MyEngine extends GLEngine implements
        SharedPreferences.OnSharedPreferenceChangeListener,
        SensorEventListener {
    NeheLesson08Renderer renderer;

    public MyEngine() {
        super();
        // handle prefs, other initialization
        renderer = new NeheLesson08Renderer();
        sharedPreferences = NeheLesson08WallpaperService.this.getSharedPreferences(PREFERENCES, 0);
        sharedPreferences.registerOnSharedPreferenceChangeListener(this);
        onSharedPreferenceChanged(sharedPreferences, null);
        renderer.setContext(getBaseContext());
        setRenderer(renderer);
        setRenderMode(RENDERMODE_CONTINUOUSLY);
    }
           public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
         sharedPreferences = getSharedPreferences(PREFERENCES, MODE_PRIVATE);
        String rotspeed = null;
         String storedPreference = sharedPreferences.getString("rotspeed", "key");
         SharedPreferences.Editor editor = sharedPreferences.edit();
         editor.putString("rotspeed", storedPreference); // value to store
         editor.commit();
         System.out.println("stored procedure values::"+storedPreference);
    }

Это в классе Renderer

            storedPreference= sharedPreferences.getString("rotspeed", "key");
     SharedPreferences.Editor editor = sharedPreferences.edit();

     editor.putString("rotspeed", storedPreference); // value to store
     editor.commit();
     System.out.println("stored procedure values in rendere::"+storedPreference);    

Мой Logcat выглядит так:

                 06-26 01:42:38.285: E/AndroidRuntime(4778): FATAL EXCEPTION: main
           06-26 01:42:38.285: E/AndroidRuntime(4778): java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
           06-26 01:42:38.285: E/AndroidRuntime(4778):  at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:224)
           06-26 01:42:38.285: E/AndroidRuntime(4778):  at com.srashtaa.planets3dgalaxylivewallpaper.NeheLesson08Renderer.LoadPreferences(NeheLesson08Renderer.java:155)
           06-26 01:42:38.285: E/AndroidRuntime(4778):  at com.srashtaa.planets3dgalaxylivewallpaper.NeheLesson08Renderer.setContext(NeheLesson08Renderer.java:146)
           06-26 01:42:38.285: E/AndroidRuntime(4778):  at com.srashtaa.planets3dgalaxylivewallpaper.NeheLesson08WallpaperService$MyEngine.<init>(NeheLesson08WallpaperService.java:42)
           06-26 01:42:38.285: E/AndroidRuntime(4778):  at com.srashtaa.planets3dgalaxylivewallpaper.NeheLesson08WallpaperService.onCreateEngine(NeheLesson08WallpaperService.java:26)

Заранее спасибо!!


comment
Публиковать содержимое логов тоже   -  person Green goblin    schedule 26.06.2014
comment
Я вставил свои данные logcat   -  person micky    schedule 26.06.2014
comment
Что такое storedPreference?   -  person Green goblin    schedule 26.06.2014
comment
это строковая переменная   -  person micky    schedule 26.06.2014
comment
Я имею в виду в классе Renderer   -  person Green goblin    schedule 26.06.2014
comment
Да, это строковая переменная   -  person micky    schedule 26.06.2014


Ответы (1)


Напишите класс PreferenceActivity, который использует xml в вопросе. Используйте SharedPreferences в onCreate:

public class MyPreferencesActivity extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.<YourXml>);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

        //Get preference values
        String value = prefs.getString(<Key>, <DefaultValue>);
}
person Green goblin    schedule 25.06.2014
comment
Спасибо за ваш ответ. Я размещаю код, который вы упомянули, в моих настройках. Как я могу получить доступ или получить значения предпочтений? - person micky; 26.06.2014
comment
Я пробовал ваш код. Он получает значение общего предпочтения, но я не могу использовать это значение. Где я получил classcastexception. Должен ли я вставить свой код - person micky; 26.06.2014