ブロードキャスト受信機を使用して、24時間ごとに自分のフラグメント内の変数の値を変更しました。共有設定値が2回目に更新されません
フラグメントの再起動時に変数の値が以前の初期化に再初期化されるため、共有プリファレンスを使用して毎回値を保存して何度も再初期化しません。
値は一度変更され、再度更新されないという問題があります。その値が10であれば、それを11に変更しますが、その後12
にならないこれはこれはBroadcastReceiverから値を取得するためにフラグメントに使用EventBus機能である放送受信機
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));;
}
です
@Subscribe
public void onEvent(ImageNameEvent event) {
imagename = Integer.parseInt(event.getMessage());
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("image", imagename);
editor.apply();
}
これは、共有設定の値が取得されるフラグメントのの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を使用することを検討しましたか? –