Android Intent.FLAG_ACTIVITY_CLEAR_TOP очищает SharedPreferences? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть приложение со следующим потоком операций 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();
                }

1 Ответ

0 голосов
/ 14 марта 2019

Добавить данные в общие настройки:

SharedPreferences.Editor editor = getSharedPreferences("MY_PREFS_NAME",MODE_PRIVATE).edit();
  editor.putString("name", "myname");
  editor.putInt("id", 12);
  editor.apply()

Получить данные из общих настроек:

SharedPreferences prefs = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE); 
String name= prefs.getString("name", "xyz"); // here xyz is the default value
int id = prefs.getInt("id", 0); // 0 is the default value.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...