-5

my logical Я пытаюсь получить textView из моего файла Main.java, и при нажатии на уведомление он должен его распечатать. Я знаю, что я должен использовать sharedPreferences для этого. Я это сделал. Тем не менее, он продолжает бросать исключение NullPointerException, но я назвал все, что мне нужно вызвать в моем классе NotificationPage.java, поэтому я не уверен, что именно не так. Пожалуйста, любая помощь приветствуется.NullPointerException с SharedPreferences

Это мой класс NotificationPage.java

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.widget.TextView; 


public class NotificationPage extends Activity { 
SharedPreferences sp; 
SharedPreferences.Editor edit; 
TextView arrival; 
TextView notifdate; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.notification); 
    notifdate=(TextView)findViewById(R.id.textView5); 
    arrival=(TextView)findViewById(R.id.textView4); 
    sp=getSharedPreferences(arr, MODE_PRIVATE); 
    edit=sp.edit(); 
    sp.getString(arr, null); 
    edit=sp.edit(); 
    edit.putString(arr,sp.getString(arr,null)); 
    notifdate.setText("Hey!" + sp.getString(arr,null)); 
    edit.apply(); 
} 

это строка кода, которая получает мои общие предпочтения из другого Java файла

arr=arrival.getText().toString(); 
sp=getSharedPreferences(arr,MODE_PRIVATE); 
+0

"Тем не менее, он держит бросали NullPointerException" - пожалуйста, напишите весь трассировки стека. – CommonsWare

+0

Из stacktrace это не похоже, что ваш вопрос имеет какое-то отношение к sharedPreferences. NPE бросается на arrival.getText(), что указывает на то, что приход равен нулю – Leo

+0

Почему бы вам не использовать статическое слово для «Session Name»? Есть ли проблема с использованием статического слова? – Nic

ответ

1

Поместите ключ-значение

public static final String SP_NAME = "my_preferences"; 
SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE); 
sp.edit().putString("key", "value").apply(); 

Получить значение

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); 
String value = sp.getString("key", "defaultValue"); 
+0

Прошу прощения, я продолжаю делать ошибки с sharedPreferences, но твоя работала отлично для меня. Спасибо большое! – Aria

1

Инициализировать ваш общий объект Preference (sp)

sp = getSharedPreferences("Session Data", Context.MODE_PRIVATE);  
+0

как мне это сделать? – Aria

+0

Я привел пример, который вам нужно инициализировать, прежде чем вы его используете, я надеюсь, что вы можете это выяснить – meda

+0

, но я сделал это после инициализации моего TextView:/ – Aria

1

закрытый окончательный String SP_FILE = "my_shared_preference s ";

Вы не представляете, как использовать общие настройки. Обратитесь к Shared Preference Guide.

У вас есть 2 способа использования общих настроек, чтения или записи.

Если вы пишете свои общие настройки, сначала дайте им имя.

public static final String SP_FILE_NAME = "my_shared_preferences"; 

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); 
sp.edit().putString("key", "value").apply(); 

Существует одно редактирование для одного приложения. Между вами вы можете положить то, что хотите.

Чтобы прочитать значение:

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); 
String value = sp.getString("key", "defaultValue"); 

Надеется, что вы можете увидеть, что неправильно в вашем коде.

+0

ok Я вижу, что я сделал не так, это прекратило сбой, так что сработало! Спасибо! проблема заключается в том, что он не получает текст из файла Main.java. см., когда я открываю уведомление, TextView в NotificationPage.java, который должен отражать другой TextView из файла Main.java, пуст. Не могли бы вы представить, что я должен сделать, чтобы исправить это? – Aria

 Смежные вопросы

  • Нет связанных вопросов^_^