我正在尝试做什么
Hello Guys。
我得到了一个服务,只要在SharedPreference中启动或停止服务(started = true / stopped = false),就将布尔设置为true或false。现在,当我尝试在我的Activity中获取布尔值时,总是找不到它。我该如何解决这个......这是你的代码。
代码
我服务中的Methode:
private void setStarted(boolean started) {
// SharedPreferences casten
mPrefs = this.getSharedPreferences(LOG_TAG, MODE_PRIVATE);
// Boolean in SharedPreferences hinzufügen
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear().apply();
editor.putBoolean(PREF_STARTED, started).commit();
editor.commit();
//mPrefs.edit().putBoolean(PREF_STARTED, started).commit();
Log.d(LOG_TAG, "Variabel " + mPrefs.getBoolean(PREF_STARTED, false));
}
在我的活动中
// mPrefs caten
mPrefs = this.getSharedPreferences(GPSService.LOG_TAG, MODE_PRIVATE);
// boolean holen ob service gestartet oder nicht
run = mPrefs.getBoolean(GPSService.PREF_STARTED, false);
如何从中获取布尔值?它总是返回我必须在getBoolean Methode中给出的默认值。
感谢您的提前帮助
狩猎
答案 0 :(得分:3)
以下是我在其中一个应用中成功使用的一些代码。它用于应用程序的各个部分,例如来自活动和服务:
void putValue(Context context, String pref, boolean value) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(pref, value);
editor.commit();
}
boolean getValue(Context context, String value, boolean defaultValue) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
return settings.getBoolean(value, defaultValue);
}
答案 1 :(得分:1)
尝试在服务和活动中使用PreferenceManager的getDefaultSharedPreferences(上下文关联)方法。
private void setStarted(boolean started) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mPrefs.edit().putBoolean(PREF_STARTED, started).commit();
Log.d(LOG_TAG, "Variabel " + mPrefs.getBoolean(PREF_STARTED, false));
}
在您的活动中
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
run = mPrefs.getBoolean(GPSService.PREF_STARTED, false);
还要确保你:
答案 2 :(得分:0)
只需像活动一样构建你的prefs对象。唯一的区别是拉动应用程序的上下文。
SharedPreferences prefs = _ getApplicationContext().getSharedPreferences("com.example.appname", Activity.MODE_PRIVATE);
Boolean tmpBool = prefs.getBoolean("PREF_NAME", null);