1

我正在尝试做的事情


大家好。

我得到了一个服务,每当在 SharedPreference 中启动或停止服务(启动 = 真 / 停止 = 假)时,它的布尔值设置为 true 或 false。现在,当我尝试在我的活动中获取布尔值时,它总是找不到它。我该如何解决这个问题……这是给你们的代码。

代码


我的服务中的方法:

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 中提供的默认值。

提前感谢您的帮助

苹果浏览器

4

3 回答 3

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);
}
于 2012-05-25T14:57:42.443 回答
1

尝试在您的服务和活动中使用PreferenceManager的getDefaultSharedPreferences(Context context) 方法。

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(this)。
于 2012-05-25T14:00:03.167 回答
1

只需以与活动的一部分相同的方式构建您的首选项对象。唯一的区别是拉入应用程序的上下文。

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

Boolean tmpBool = prefs.getBoolean("PREF_NAME", null);
于 2015-03-19T17:04:55.027 回答