0

sharepreferenceアクティビティから 1 つのサービスへの値にアクセスしようとしていますが、スローされNullPointerExceptionています。多くのことを試しましたが、それでも同じ問題が発生します。これに関連する多くの質問を検索し、解決方法を試しましたが、うまくいきませんでした。これについて私を案内していただければ幸いです。前もって感謝します、

ここにコードがあります

サービスクラスでSharePreferencesを次のように定義しました

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor editor=preferences.edit();   

そして、私のアクティビティに価値を入れようとしているよりも

foregroundService.editor.putString(foregroundService.com, data.getComponent().toString());
foregroundService.editor.commit();

再びサービスクラスに戻り、次の値にアクセスします

preferences.getString(com, "not available");

助けてください、ありがとう

4

3 に答える 3

0

以下を使用してアクティビティに値を追加できます。

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor editor=preferences.edit(); 
editor.putString(foregroundService.com, data.getComponent().toString());
editor.commit();

デフォルトのものを使用しているため、常に同じ設定です

于 2013-01-21T10:55:02.043 に答える
0

名前を付けた行を見てくださいforegroundService.com

foregroundService.editor.putString(foregroundService.com, data.getComponent().toString());

そして、あなたは次のように取得しようとしています

preferences.getString(com, "not available");

名前は put と get の両方で同じでなければなりません。

それをpreferences.getString(foregroundService.com, "not available");

試してみてください..

于 2013-01-21T11:07:08.930 に答える
0

Activity と Service の両方が同じパッケージを使用しているため、同じ Context を共有していると仮定すると、getApplicationContext() が使用できないため、Service 内で Context = null であるという事実と関係があると思います。

解決策は次のとおりです。

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);

サービス内でコンテキストを使用できない場合は、サービスをインスタンス化するときに、サービスの onCreate 関数にコンテキストを渡す必要があります。

于 2013-01-21T11:59:39.213 に答える