2017-02-06 16 views
0

我已经使用广播接收器来改变我的片段内每24小时变量的值。共享偏好值不更新第二次android

自变量的值被重新初始化之前的初始化时,我已经使用共享偏好的片段重新启动每次保存值,以便它不会一次又一次地重新初始化。

问题是,该值被更改一次,不会再次更新。因此,如果该值为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));; 

} 

这是片段用于从广播接收器获取的价值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的

+0

你有没有考虑过使用SharedPreferenceChangeListener来做这件事? –

回答

0

()使用editor.commit() 不能确定的原因,但它为我工作。

1

使用editor.apply()你正在做异步,并且不返回任何结果。 editor.commit()改为同步,如果保存有效则返回true,否则返回false。

文档here

所以,你可以尝试改变apply()commit(),看看它是否返回true或false。