【发布时间】:2019-01-31 07:48:03
【问题描述】:
我在我的一项活动中存储了一个共享首选项。该首选项被存储,但是当该活动完成并返回到我检查存储的共享首选项的主要活动时,它返回 false(无共享首选项)。一次我重新启动了我的应用程序,在它声明的地方检查了相同的共享首选项,它有一些值。 简而言之,共享偏好值仅在应用重启后才会更新。
Main Activity(Calling Settings Activity):
Intent intent = new Intent(Voiceanswer.this, SettingsActivity.class);
startActivityForResult(intent, 108);
Settings Activity:(onCreate)
SharedPreferences.Editor editor=getSharedPreferences("trial",MODE_PRIVATE).edit();
editor.putBoolean("flag",false);
boolean trialflag=editor.commit();
设置活动结束:
SettingsActivity.this.finish();
主要活动(在简历上)
SharedPreferences voiceTemp=getSharedPreferences("trial",MODE_PRIVATE);
if(voiceTemp.contains("flag"))
Log.d(TAG, "Contains key flag");
boolean trialflag=voiceTemp.getBoolean("flag",true);
App重启前,设置Activity完成后:
voiceTemp.contains("flag") returns false.
trialflag=true;
应用重启后:
voiceTemp.contains("flag") returns true.
trialflag=false;
【问题讨论】:
-
尝试使用 apply() 而不是 commit?
-
我尝试了应用和提交都没有运气。存储共享首选项值后,我手动检查首选项xml是否与这些值一起存储并且值在那里。所以存储没有问题,唯一的当它回到主要活动时,问题在于 retirving。