0

我正在开发的 LiveWallpaper 应用程序(我的第一个)有问题。考虑 2 个类:LiveWallpaperServiceLiveWallpaperSettings. LiveWallpaperSettings延伸PreferencyActivity。表示用户选择的偏好的示例数据,例如 a boolean displaySprite(true=> 在屏幕上显示精灵,false 不显示) 通过SharedPreferencesin保存/持久化LiveWallpaperSettings

在启动应用程序时(设置 -> 显示 -> LiveWallpaper -> MyLiveWallpaper),需要知道保存的首选项,以便可以显示或不显示精灵。但是,LiveWallpaperSettings在单击“设置”按钮之前不会实例化,因此SharedPreferences不可用,因此在此之前保存的设置不可用。

我试过这个LiveWallpaperService.onCreateScene(),但里面没有数据:
SharedPreferences startupPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

我能做些什么?

4

2 回答 2

1

如果 entry/sharedpref 文件不存在,则有一个默认值:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
boolean display = settings.getBoolean("display", true);

“公共抽象布尔 getBoolean(字符串键,布尔 defValue)”

在 API 级别 1 中添加 从首选项中检索布尔值。

参数 key 要检索的首选项的名称。 defValue 如果此首选项不存在,则返回值。

希望我没有误解你的问题:)

于 2013-05-15T19:41:10.653 回答
0

在您的首选项 xml 中设置默认值,并在 MainActivity onCreate() 添加以下代码setDefaultValues(this, R.xml.yourxmlname, false);

于 2013-05-15T19:53:02.337 回答