SharedPreference 更改未反映在我的墙纸服务中

编程入门 行业动态 更新时间:2024-10-09 14:21:51
本文介绍了SharedPreference 更改未反映在我的墙纸服务中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在制作一个动态壁纸,我需要在设置场景中改变车辆的速度,当我按下返回按钮时,它需要反映回壁纸服务.在我的偏好活动中,我将列表偏好更改保存在共享偏好中,如下所示:-

I am making a live wallpaper where i need to change the speed of a vehicle in setting scene and it needs to get reflected back to the wallpaper service when i press the return button. In my preference activity, i save the list preference changes in shared preferences like this :-

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); ListPreference listPreference = (ListPreference) findPreference("listPref"); currValue = listPreference.getValue(); Log.e("LiveWallpaperSettings", "currvalue " + currValue); listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference arg0, Object arg1) { SharedPreferences customSharedPreference = getSharedPreferences("Speed", LiveWallpaperSettings.MODE_PRIVATE); SharedPreferences.Editor editor = customSharedPreference.edit(); editor.putString("Speed",currValue); editormit(); return true; } });

我的壁纸服务是使用 andengine livewallpaper 扩展制作的.如果我想在服务中反映我的列表首选项中的更改,我该怎么做.这就是我所做的,但它似乎不起作用.

My wallpaper service is made using andengine livewallpaper extension. If i want to reflect the changes in my list preference in the service, how do i do that. This is what i did but it doesn't seem to be working.

我的 prefs.xml

My prefs.xml

<PreferenceCategory android:title="Settings"> <ListPreference android:title="Speed" android:summary="Change the Speed" android:key="listPref" android:defaultValue="15" android:entries="@array/listArray" android:entryValues="@array/listValues" /> </PreferenceCategory>

我的array.xml

My array.xml

<resources> <string-array name = "listArray"> <item>Slow</item> <item>Medium</item> <item>Fast</item> </string-array> <string-array name = "listValues"> <item>5</item> <item>15</item> <item>30</item> </string-array>

在我的服务中,我实现了 SharedPreferences.OnSharedPreferenceChangeListener 并实现了以下方法

In my service i implement SharedPreferences.OnSharedPreferenceChangeListener and implement the following method

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) { sharedPreferences = getSharedPreferences("Speed", MODE_PRIVATE); strSpeedValue = sharedPreferences.getString("Speed", "5"); fltSpeedValue = Integer.parseInt(strSpeedValue); final AutoParallaxBackground autoParallaxBackground = new AutoParallaxBackground(0, 0, 0, 10); autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(fltSpeedValue, new Sprite(0,mCamera.getHeight() - this.mParallaxLayer.getHeight(),this.mParallaxLayer, getVertexBufferObjectManager()))); autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(0f, new Sprite(CAMERA_WIDTH/2 - 30, CAMERA_HEIGHT/2,this.mAutoLayer, getVertexBufferObjectManager()))); mMainScene.setBackground(autoParallaxBackground); } @Override protected void onResume() { super.onResume(); // Set up a listener whenever a key changes PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); // Unregister the listener whenever a key changes PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this); }

但是我在 listpreference 中更改的值在我的服务中没有更改.我做错了什么吗?

But the value that i am changing in my listpreference does not get changed in my service. Am i doing something wrong?

推荐答案

已解决!

我在 PreferenceActivity 中错误地设置了值,并且我没有正确实现 OnSharedPreferenceChangeListener.

I was setting values incorrectly in my PreferenceActivity and i didn't implemement OnSharedPreferenceChangeListener properly.

解决方案:-

ListPreference listPreference; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); listPreference = (ListPreference) findPreference("listPref"); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { SharedPreferences customSharedPreference = getSharedPreferences(key, LiveWallpaperSettings.MODE_PRIVATE); SharedPreferences.Editor editor = customSharedPreference.edit(); editor.putString("Speed",listPreference.getValue()); editormit(); Log.e("LiveWallpaperSettings", "Speed Value after setting " + customSharedPreference.getString("Speed", "")); } @Override protected void onResume() { super.onResume(); // Set up a listener whenever a key changes getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); // Unregister the listener whenever a key changes getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); }

更多推荐

SharedPreference 更改未反映在我的墙纸服务中

本文发布于:2023-11-01 11:04:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1549163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:墙纸   SharedPreference

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!