【发布时间】:2019-03-14 15:40:03
【问题描述】:
我有一个具有以下活动流程 A->B->C 的应用程序。在活动 C 中,用户可以选择保存我存储在 SharedPreferences 文件中并调用 Intent.FLAG_ACTIVITY_CLEAR_TOP 的用户名和数据(转换为字符串的字符串和字符串数组)。这使他们回到活动 A。但是,当我尝试检查存储的用户名与他们现在输入的用户名时,我总是会遇到 NullPointerException。
private void saveData(){
SharedPreferences session_data = getSharedPreferences("SESSION_DATA", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = session_data.edit();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < myData.length; i++) {
sb.append(myData[i]).append(",");
}
editor.putString("SAVED_SCAN",sb.toString());
editor.putString("SAVED_ID",myID);
Toast.makeText(C.this,"Data Saved",Toast.LENGTH_LONG).show();
endActivity();
}
private void endActivity(){
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
然后回到活动 A.(textData is a EditText.getText().toString())
SharedPreferences prf = getSharedPreferences("SESSION_DATA",MODE_PRIVATE);
String testID = prf.getString("SAVED_ID",null);
try {
if(testID.equals(textData)){
toast.makeText(A.this,"MATCH",Toast.LENGTH_LONG).show();
}
} catch (NullPointerException e) {
e.printStackTrace();
}
【问题讨论】:
-
您没有将数据保存到
SharedPreferences。不要忘记致电editor.apply() -
Android 工作室没有警告过你没有使用 apply() 和 commit() 方法。通常,如果您在初始化 SharePreference 编辑器时未使用任何这些方法,Android Studio 会显示警告
标签: java android save sharedpreferences