[android-group-japan: 4047] SharedPreferencesでputStringをしても値が反映されない

3,232 views
Skip to first unread message

夜子ママ

unread,
May 8, 2010, 2:00:10 AM5/8/10
to 日本Androidの会
夜子ままです

件名のことで行き詰っています、サンプルや資料などをみても

PreferenceManager.getDefaultSharedPreferences や

getSharedPreferences で取得されたSharedPreferences に対して

edit() で取得したEdiorに putString なりを行い commit をすれば値が設定されるとあるのですが、実際 commit
後に getString を同じSharedPreferences に対して行っても値が設定されておらず困っております。

なにかセキュリティー的な問題なのか、初期化時の問題なのか、、、
PreferenceActivity経由でPreferenceなオブジェクトに関してはgetDefaultSharedPreferences
で取得されるSharedPreferences に対して値が設定されていることは確認しました。

なにか勘違いをしているのでしょうか?

例)
sharedPreferences =
context.getSharedPreferences("mypreference",Context.MODE_PRIVATE);
SharedPreferences def =
PreferenceManager.getDefaultSharedPreferences(this);

String bddef = def.getString(Funcs.KEY_BIRTHDAY, null);

sharedPreferences.edit().putString(Funcs.KEY_BIRTHDAY, bddef);
sharedPreferences.edit().commit();

String bd = sharedPreferences.getString(Funcs.KEY_BIRTHDAY, null);

上のbddefには値が設定されいるが、bd はNullになっている。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

tomoki yamashita

unread,
May 8, 2010, 2:25:01 AM5/8/10
to android-g...@googlegroups.com
やましたです。

私はPreferenceに保存するときにgetEditorするときは一度Editor変数を用意して使っているのですが、
同じようにしてはいかがでしょうか
以下がコードです。

sharedPreferences =
context.getSharedPreferences("mypreference",Context.MODE_PRIVATE);
SharedPreferences def = PreferenceManager.getDefaultSharedPreferences(this);

String bddef = def.getString(Funcs.KEY_BIRTHDAY, null);

// sharedPreferences.edit().putString(Funcs.KEY_BIRTHDAY, bddef);
// sharedPreferences.edit().commit();
Editor editor = sharedPreferences.edit();
editor.putString(Funcs.KEY_BIRTHDAY, bddef);
editor.commit();

String bd = sharedPreferences.getString(Funcs.KEY_BIRTHDAY, null);




2010年5月8日15:00 夜子ママ <mf_te...@kayotrading.co.jp>:
--
/*
tomoki yamashita
tomor...@gmail.com
http://twitter.com/tomorrowkey
http://d.hatena.ne.jp/tomorrowkey/
*/

夜子ママ

unread,
May 8, 2010, 2:35:10 AM5/8/10
to 日本Androidの会
夜子ままです

ありがとうございます、うまくいきました

edit() で取得されるEditorはそのつどCreateされているってことなのかな、、
使い方を間違っているということですよね。

早速のお返事大変たすかりました。

On 5月8日, 午後3:25, tomoki yamashita <tomorrow...@gmail.com> wrote:
> やましたです。
>
> 私はPreferenceに保存するときにgetEditorするときは一度Editor変数を用意して使っているのですが、
> 同じようにしてはいかがでしょうか
> 以下がコードです。
>
> sharedPreferences =
> context.getSharedPreferences("mypreference",Context.MODE_PRIVATE);
> SharedPreferences def = PreferenceManager.getDefaultSharedPreferences(this);
>
> String bddef = def.getString(Funcs.KEY_BIRTHDAY, null);
>
> // sharedPreferences.edit().putString(Funcs.KEY_BIRTHDAY, bddef);
> // sharedPreferences.edit().commit();
> Editor editor = sharedPreferences.edit();
> editor.putString(Funcs.KEY_BIRTHDAY, bddef);
> editor.commit();
>
> String bd = sharedPreferences.getString(Funcs.KEY_BIRTHDAY, null);
>
> 2010年5月8日15:00 夜子ママ <mf_teraz...@kayotrading.co.jp>:
> tomorrow...@gmail.comhttp://twitter.com/tomorrowkeyhttp://d.hatena.ne.jp/tomorrowkey/
> */
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。

Link-you Android

unread,
May 8, 2010, 2:51:53 AM5/8/10
to android-g...@googlegroups.com
夜子ママさん

Linkyouと申します。

edit()でその都度newされるかどうかはSDKのソースを見て
みないと分かりませんが、おそらくそこが問題ではなくて、

SharedPreferences型のオブジェクトを2つ生成されています
よね?sharedPreferencesという名前と、def という名前で。

def の方のSharedPreferencesに書き込んでcommit して、
読み込む時(getStringを呼ぶ時)は、sharedPreferencesの
方から読み込んでいる事が原因かと思います。

やましたさんのソースのように、def の方のSharedPreferences
は全く必要ないのではないでしょうか。



2010年5月8日15:35 夜子ママ <mf_te...@kayotrading.co.jp>:



--
==============================
Developer Name: Linkyou
Mail:android...@gmail.com
Blog:http://linkyou-blog.blogspot.com/
Web:http://link-you.jp/android/dietlog/
==============================

Link-you Android

unread,
May 8, 2010, 2:58:00 AM5/8/10
to android-g...@googlegroups.com
夜子ママさん

Linkyouです。

すいません、勘違いしてました。
きちんと、書き込みも読み込みもsharedPreferencesの
方のオブジェクトに対して行っていますね。
失礼しました。

そうすると、ほんとにedit() 周りが問題なのかもしれませんね。


2010年5月8日15:51 Link-you Android <android...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages