Чтение SharedPreferences из других видов деятельности - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь передать значения из одного класса в другой, но мой контекст sharedpreferences, вероятно, не работает, я получил NullPointerExcepiton на линии, когда я инициализирую общие настройки? Что я должен изменить контекст?

CustomOnItemSelected.java: (инициализация sharedpref)

 public class CustomOnItemSelectedListener extends Activity implements AdapterView.OnItemSelectedListener {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Toast.makeText(parent.getContext(),
            "Wybrano : " + parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();

    SharedPreferences preferences = getSharedPreferences("session", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("sessionId", parent.getItemAtPosition(position).toString());
    editor.commit();
}

tworzeniekonta.java: (читает sharedpref)

       TextView tv6 = findViewById(R.id.textView6);
    SharedPreferences preferences = getSharedPreferences("session", CustomOnItemSelectedListener.MODE_PRIVATE);
    String sessionId = preferences.getString("sessionId", null);
    tv6.setText(sessionId);

Исключение нулевого указателя:

    java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference

1 Ответ

0 голосов
/ 12 июня 2019

Где вы разместили SharedPreferences preferences = getSharedPreferences("session", CustomOnItemSelectedListener.MODE_PRIVATE); ?. Попробуйте позвонить после того, как деятельность была создана. Предпочтения должны быть инициализированы в onCreate (). Пример:

public class MainActivity extends AppCompatActivity {

   TextView tv6 = findViewById(R.id.textView6);
   SharedPreferences sharedPreferences;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      sharedPreferences = getSharedPreferences("session", Context.MODE_PRIVATE);
      String sessionId = preferences.getString("sessionId", null);
      tv6.setText(sessionId);
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...