【发布时间】:2019-10-26 23:04:01
【问题描述】:
我正在尝试将数据保存在 Activity 上并在 Fragment 上读取。
public void saveData() {
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(kekoyaz,mykey );
editor.apply();
Toast.makeText(this, "Data saved", Toast.LENGTH_SHORT).show();
}
在片段上加载数据
public void loadData() {
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
//SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
String beimtext = sharedPreferences.getString(kekoyaz, "");
Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
}
但是 getSharedPreferences 在片段上会变红,建议创建 SharedPreferences 方法。所以我做到了,没有留下任何错误。
private SharedPreferences getSharedPreferences(String sharedPrefs, int modePrivate) {
return null;
}
我在运行应用程序时遇到错误。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.prestige.user, PID: 32516
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
at com.prestige.user.BlankFragment.loadData(BlankFragment.java:1918)
at com.prestige.user.BlankFragment.onCreateView(BlankFragment.java:1898)
更新
我删除了这一行
/*private SharedPreferences getSharedPreferences(String sharedPrefs, int modePrivate) {
return null;
}*/
我使用你的代码
public void loadData() {
getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
String beimtext = sharedPreferences.getString(kekoyaz);
Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
}
我添加
private ResourceBundle sharedPreferences;
但我又遇到了错误。
【问题讨论】:
-
getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE); 试试这个
-
好吧,当你有一个返回 null 的方法时,你期望什么?
-
其实当我添加“SharedPreferences sharedPreferences = this.getActivity().getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);"我没有错误,但我的值没有显示出来。只有文本出现字符串文本“bu”。
标签: java android nullpointerexception