[英]Shared preferences value not updating the second time android
我已經使用廣播接收器每24小時更改片段中變量的值。
由於在片段重新啟動時變量的值將重新初始化為先前的初始化,因此我使用共享的首選項每次都保存該值,以使它不會一次又一次地初始化。
問題在於該值僅更改一次,並且不會再次更新。 因此,如果值為10,它將更改為11,但不會變為12。
這是廣播接收器
public class AlarmReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String intentImageName = intent.getStringExtra("imageName");
int numberImageName = Integer.parseInt(intentImageName) +1;
EventBus.getDefault().post(new ImageNameEvent(""+numberImageName));;
}
這是片段中用於從BroadcastReceiver獲取值的EventBus函數
@Subscribe
public void onEvent(ImageNameEvent event) {
imagename = Integer.parseInt(event.getMessage());
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("image", imagename);
editor.apply();
}
這是Fragment的onCreate函數,在該函數中檢索共享首選項的值。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
scheduleAlarm();
preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
int name = preferences.getInt("image", 0);
if (name != 0) {
imagename = name;
}
}
任何幫助,將不勝感激。
使用editor.apply()
您正在執行異步操作,並且不返回任何內容。 editor.commit()
相反是同步的,如果保存有效,則返回true,否則返回false。
文件在這里
因此,您可以嘗試使用commit()
更改apply()
,看看它是否返回true或false。
而不是editor.apply()可以使用editor.commit()不確定原因,但是對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.