1

私がやろうとしていること


こんにちはみんな。

SharedPreferenceでサービスが開始または停止(開始= true/停止=false)されるたびにブール値を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メソッドで指定しなければならなかったデフォルト値が常に返されます。

よろしくお願いします

サファリ

4

3 に答える 3

3

これは、私のアプリの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);
}
于 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 に答える