簡體   English   中英

共享的偏好設置值不會第二次更新android

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM