0

設定の読み込みと保存に使用するSettingsクラスがあります。SharedPreferences読みやすくするために、そのクラスのEditorandSharedPreferencesオブジェクトのメンバーを作成し、それらを呼び出して読み取りと書き込みの設定を設定しました。ただし、これはうまく機能していないようです。

これはSettingsクラスです:

public class Settings { 
    protected Context ctx;
    protected SharedPreferences sp;
    protected Editor edit;

    public Settings(Context c) {
         ctx = c;       
         sp = ctx.getSharedPreferences("app_settings", Context.MODE_PRIVATE);
         edit = sp.edit();
    }

    public void setString(String name, String value) {
        edit.clear();
        edit.putString(name, value);
        edit.commit();
    }
    public String getString(String name, String def) {
        return sp.getString(name, def);
    }
}

そして、私はこのように呼び出します(私のfrom Applicationextendedから:MyApplicationonCreate

Settings s = new Settings(getApplicationContext());
s.setString("foo", "bar");

その値を読み直すと、常にデフォルト値が取得されます。

String value = s.getString("foo", "default");
4

2 に答える 2

1

edit.clear() が原因です

この方法を変更

public void setString(String name, String value) {
    edit.clear();
    edit.putString(name, value);
    edit.commit();
}

次のように

public void setString(String name, String value) {

    edit.putString(name, value);
    edit.commit();
}
于 2013-08-14T11:44:37.833 に答える