您好我正在开发Android openGL动态壁纸。我无法访问从wallpaperService到渲染器类的共享首选项。我收到的错误如下:
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)
这是我的代码:
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();
String check=sharedPreferences.getString("rotspeed", "");
System.out.println("stored procedure values::"+check);
这里我试图获得偏好值,
prefs= PreferenceManager.getDefaultSharedPreferences(value);
storedPreference= prefs.getString("rotspeed","0");
有谁能告诉我为什么会收到此错误?
答案 0 :(得分:1)
06-26 01:42:38.285: E/AndroidRuntime(4778): java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
此行说明您正在尝试将整数转换为String。因此崩溃。确保如果您在SharedPrefs中将值保存为String,则需要将其作为String检索。
答案 1 :(得分:1)
您正在尝试从您放置一些整数首选项的位置获取String首选项。您需要向我们展示代码,以便我们为您提供帮助。我想你做过这样的事情:
mEditor.putInt("KEY",1);
并且您正试图通过以下方式获得此值:
mPrefs.getString("KEY");
请告诉我们您的密码。
答案 2 :(得分:1)
//Try This
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString("rotspeed", value);
editor.commit();
}
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = sharedPreferences.getString("rotspeed", "1000");
答案 3 :(得分:0)
editor.putString()
的两个参数是您要存储的键和字符串,而不是对SharedPreferences
对象的引用。例如
editor.putString("rotspeed", "1000")
请参阅此处了解SharedPreferences.Editor
的文档:
http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
这里有一些关于使用SharedPreferences
的好的介绍:
http://developer.android.com/training/basics/data-storage/shared-preferences.html How to use SharedPreferences in Android to store, fetch and edit values
答案 4 :(得分:0)
感谢所有回答我问题的人。所有的答案都很感激。当我从其他活动中调用偏好时,我的错误是,活动没有保持其上下文.Thatsy我无法访问首选项。
public void setContext(Context value) {
mContext = value;
prefs = value.getSharedPreferences(PREFERENCES,NeheLesson08SettingsActivity.MODE_PRIVATE);
}
我没有放置&#34;价值&#34;面对getSharedPreferences。
感谢!!!