繁体   English   中英

无法读取数据形式的sharedpreference变量

[英]unable to read data form sharedpreference variable

共享首选项的创建如下:

edt = sp.edit();
edt.putString("token_value", pojo.getKey());
edt.commit();

我想在另一个这样的类中使用此值:

String key = sp.getString("token_value", "");

在这一点上,我得到这样的错误:

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference

请给我您的宝贵建议,并在此先感谢...

在检索首选项之前,是否已初始化sp对象?

SharedPreferences sp = yourActivity.getPreferences(Context.MODE_PRIVATE);
String key = sp.getString("token_value", "");

该异常清楚地表明您的sp变量是空引用,并且没有指向任何对象。

之所以出现此错误,是因为在获取值时传递了null。 更改为

String key = sp.getString("token_value", null);

这样,您将获得价值。

您的SharedPreferences变量sp已声明但未初始化。 将此添加到您的代码:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(YourActivity.this);
String key = sp.getString("token_value","");

SharedPreferences保存变量

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
// make sure pojo.getKey() return value not null prefer make check here 
//if(pojo.getKey() != null)
editor.putString("token_value",pojo.getKey());
editor.apply();

检索任何您想要的地方

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("token_value", "");

做你想做的事

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM