我想在设置页面中使用EditTextPreference
从我的应用用户获取用户名,并在Notification
中使用该用户名。但它显示错误:
xml文件:
<EditTextPreference
android:key="editpref_id"
android:title="@string/pref_edittext_id"
android:summary="@string/pref_edittext_id_summery"
android:dialogTitle="@string/pref_edittext_id_summery" />
和我的班级:
public class TimerService extends Service {
public SharedPreferences sharedPreferences;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
return super.onStartCommand(intent, flags, startId);
}
private void setupNotification() {
notification = new NotificationCompat.Builder(this)
.setContentText("Dear" + sharedPreferences.getString("editpref_id"," "));
// ...
}
和错误:
java.lang.RuntimeException: Unable to start service with Intent { java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference
我也希望将它用作EditTextPreference
的总结。
那我怎么解决呢?请回答我。谢谢
答案 0 :(得分:0)
sharedPreferences
时 setupNotification()
未定义
在sharedPreferences
中初始化您的onCreate()
:
@Override
public void onCreate() {
super.onCreate();
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}