0

我正在尝试sharepreference从一项活动访问一项服务的价值,但它正在抛出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,我认为这与 Service 内部的 Context = null 的事实有关,因为 getApplicationContext() 不可用。

解决方案是:

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);

如果上下文在您的服务中不可用,您需要在实例化服务时将其传递给您的服务的 onCreate 函数。

于 2013-01-21T11:59:39.213 回答