0

現在、Android プロジェクトに取り組んでおり、バックグラウンド サービスを構成するためのユーザー インターフェイスがあります。

アプリ設定ファイル内の値を正常に開いて変更しましたが、サービス クラス内で共有設定ファイルを開こうとしていますが、null ポインター例外が発生しています。

次のコードを使用してファイルを開きます

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() はコンテキスト (サービスをパラメーターとして) を取ります。ドキュメントhttp://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences%28android.content.Contextを参照してください。

于 2012-10-28T00:31:40.303 に答える