我想要做的
大家好。
我有一个服务,设置会在服务启动或停止是一个布尔值,真或假的SharedPreference(开始=真/停止=假)。 现在,当我试图在我的活动得到布尔在那里,它永诺不到风度找到它。 我怎样才能解决这个问题...下面的代码为你们。
码
在梅索德我的服务:
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给。
感谢您的帮助提前
苹果浏览器
下面是我成功地利用我的应用程序的一个部分代码。 它是在应用程序,例如,无论是从活动和服务的各个部分使用:
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);
}
尝试使用getDefaultSharedPreferences(上下文的背景下)的方法PreferenceManager在你的服务,你的活动都。
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);
另外,还要确保你:
- 不要调用.clear()的编辑器。
- 您可以使用PreferenceManager.getDefaultSharedPreferences(本)无处不在。
只需建立自己的首选项对象,你会为你的活动的一部分,以同样的方式。 唯一的区别是拉你的应用程序的上下文英寸
SharedPreferences prefs = _ getApplicationContext().getSharedPreferences("com.example.appname", Activity.MODE_PRIVATE);
Boolean tmpBool = prefs.getBoolean("PREF_NAME", null);