无法从我的业务接入SharedPreferences(Can't access Shared

2019-10-16 18:13发布

我想要做的


大家好。

我有一个服务,设置会在服务启动或停止是一个布尔值,真或假的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给。

感谢您的帮助提前

苹果浏览器

Answer 1:

下面是我成功地利用我的应用程序的一个部分代码。 它是在应用程序,例如,无论是从活动和服务的各个部分使用:

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);
}


Answer 2:

尝试使用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(本)无处不在。


Answer 3:

只需建立自己的首选项对象,你会为你的活动的一部分,以同样的方式。 唯一的区别是拉你的应用程序的上下文英寸

SharedPreferences prefs = _ getApplicationContext().getSharedPreferences("com.example.appname", Activity.MODE_PRIVATE);

Boolean tmpBool = prefs.getBoolean("PREF_NAME", null);


文章来源: Can't access SharedPreferences from my Service