【发布时间】:2017-02-06 11:29:53
【问题描述】:
我使用广播接收器每 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;
}
}
任何帮助将不胜感激。
【问题讨论】:
-
您是否考虑过为此使用 SharedPreferenceChangeListener?
标签: android android-fragments sharedpreferences event-bus