0

私はこの単純なコードを持っています:

        SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0);
        SharedPreferences.Editor editor = settings.edit();

        //editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on

        editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on
        long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2);

        if (settings.edit().commit()) {
            System.out.print("ok");
        } else {
            System.out.print("not ok");
        }

ご覧のとおり、私は何が起こっているのかを理解するために遊んでいます。

そこで、/ data / data / ...を確認しました。設定ファイルは実際に作成されていますが、空です(Mapタグのみ)。

test long変数は、前の行で1に設定した場合でも、2を返します。コミットはtrueを返します。

私は何かが足りないのですか?

私はuses-permissionandroid:name = android.permission.WRITE_EXTERNAL_STORAGEを設定しましたが、これは本当に外部ストレージを実行する場合にのみ必要であると信じています。

よろしく。デビッド。

4

3 に答える 3

3

私が遭遇したことの1つは、pref.edit()を呼び出し続けることができず、変更が持続することを期待できないということでした。pref.edit()を呼び出すたびに、(シングルトンではなく)新しいエディターが生成されるようです。

持続しません:

pref.edit().remove("key"); // new editor created
pref.edit().commit();      // new editor created

持続します:

Editor edit=pref.edit();   // new editor created
edit.remove("key");        // same editor used
edit.commit();             // same editor used
于 2014-10-26T21:49:50.157 に答える
1

このコードを試してください。

    SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0);
    SharedPreferences.Editor editor = settings.edit();

    //editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on

    editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on

    if (editor.commit()) {
        System.out.print("ok");
    } else {
        System.out.print("not ok");
    }
    long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2);
于 2012-10-08T10:36:11.290 に答える
0
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref",  0);        0 - for private mode
Editor editor = pref.edit();
editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email

editor.commit(); // commit changes
editor.clear();
editor.commit(); // commit changes
于 2012-10-08T10:26:52.120 に答える