0
private void init() {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    // SET VALUE RECORD

    record = prefs.getInt("record", 0);

    prefs.edit().commit();
}

private void setRecord(int i ) {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    if(i > prefs.getInt("record", 0))
        prefs.edit().putInt("record", i);

    prefs.edit().commit();
}

private int getRecord() {

    int rec;

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    rec = prefs.getInt("record", 0);

    prefs.edit().commit();

    Toast toast = Toast.makeText(this, rec+"", Toast.LENGTH_SHORT);
    toast.show();

    return rec;
}

このコードは int を設定して取得する必要がありますが、設定されていないようです...なぜそうなのか分かりますか?

4

2 に答える 2

1

試す

Editor editor = prefs.edit();
editor.putInt("record",i);
editor.commit();
于 2013-05-20T01:11:20.653 に答える
1

SharedPreferences.Editorを使用する代わりに、インターフェースを呼び出して設定を編集するのが最善だと考えてくださいprefs.edit().putInt("record", i);。ドキュメントは言う...

環境設定の変更は、SharedPreferences.Editor オブジェクトを経由して、環境設定値が一貫した状態に維持され、ストレージにコミットされるときに制御されるようにする必要があります。

次のように変更するsetMethodと、動作するはずです...

private void setRecord(int i ) {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();

    if(i > prefs.getInt("record", 0))
        editor.putInt("record", i);

    editor.commit();
}

setRecordそして、貼り付けたコードスニペットのどこにも呼び出されていないので、コードのどこかで上記のメソッドを呼び出していると思います。

于 2013-05-20T01:11:57.790 に答える