我在LiveWallpaper应用程序(我的第一个)中遇到问题我正在开发。
考虑两个类:LiveWallpaperService
和LiveWallpaperSettings
。
LiveWallpaperSettings
延伸PreferencyActivity
。表示的示例数据
用户选择的首选项,例如boolean displaySprite
(true =>在屏幕上显示精灵,false不显示)将通过SharedPreferences
中的LiveWallpaperSettings
保存/保留。
启动应用程序(设置 - >显示 - > LiveWallpaper - > MyLiveWallpaper)后,需要知道已保存的首选项,以便可以显示或不显示精灵。
但是,在单击“设置”按钮之前,LiveWallpaperSettings
未实例化,因此SharedPreferences
不可用,因此在此之前保存的设置不可用。
我在LiveWallpaperService.onCreateScene()
中尝试了此操作,但它没有数据:
SharedPreferences startupPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
我该怎么办?
答案 0 :(得分:1)
如果条目/ sharedpref文件不存在,则有一个默认值:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
boolean display = settings.getBoolean("display", true);
" public abstract boolean getBoolean(String key,boolean defValue)"
在API级别1中添加 从首选项中检索布尔值。
参数
key
要检索的首选项的名称。
defValue
如果此首选项不存在,则返回值。
希望我没有误解你的问题:)
答案 1 :(得分:0)
在您的首选项中,xml设置默认值,并在MainActivity onCreate()中添加以下代码setDefaultValues(this, R.xml.yourxmlname, false);