我正在尝试在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;
但是我又遇到一个错误。
答案 0 :(得分:0)
这是因为getSharedPreferences需要上下文。
因此,您可以使用以下内容:
getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
答案 1 :(得分:0)
更新问题后,您用getSharedPreferences()
Activity
,但未分配sharedPreferences
变量值
在下面替换您的代码。
public void loadData() {
sharedPreferences = getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
String beimtext = sharedPreferences.getString(kekoyaz);
Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
}