0

我目前正在开发一个 android 项目,该项目具有配置后台服务的用户界面。

我已成功打开并修改了应用程序首选项文件中的值,但随后我尝试在服务类中打开共享首选项文件,但出现空指针异常。

我正在使用以下代码打开文件

SharedPreferences settings = this.getSharedPreferences("prefs", 0);

然后我使用以下方法访问共享首选项,但是当我调试时,我认为它并没有走到这一步,我认为它在上面的行中失败了。

if (isPowerConnected() && !wakeLock.isHeld() && settings.getBoolean("appEnabled", true))

下面是抛出的异常。

10-28 01:02:37.453: E/EnableWakeLock(18665): java.lang.NullPointerException
10-28 01:02:37.453: W/System.err(18665): java.lang.NullPointerException
10-28 01:02:37.453: W/System.err(18665):    at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:153)

感谢您的任何帮助,您可以提供。

4

1 回答 1

1

由于您尝试从 Service 读取 SharedPreferences ,因此您应该通过

PreferenceManager.getDefaultSharedPreferences() 

代替

this.getSharedPreferences() 

getDefaultSharedPreferences() takes a Context - your Service as a parameter. Please refer to the documentation http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences%28android.content.Context

于 2012-10-28T00:31:40.303 回答