У меня есть приложение со следующим потоком операций A-> B-> C.В действии C пользователю предоставляется возможность сохранить свое имя пользователя и данные (строку и массив строк, преобразованный в строку), которые я храню в файле SharedPreferences и вызываю Intent.FLAG_ACTIVITY_CLEAR_TOP.Это возвращает их к действию А. Однако, когда я пытаюсь проверить сохраненное имя пользователя по сравнению с тем, которое они вводят сейчас, мне всегда предоставляется исключение 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 - это 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();
}