如何获取EditTextPreference字符串并在notification.setContent中使用它并将其用作android中的summery?

时间:2016-12-24 16:00:36

标签: java android notifications edittextpreference

我想在设置页面中使用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的总结。

那我怎么解决呢?请回答我。谢谢

1 个答案:

答案 0 :(得分:0)

调用sharedPreferences

setupNotification()未定义

sharedPreferences中初始化您的onCreate()

@Override
public void onCreate() {
    super.onCreate();
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}