Как указывает @ Raj в другом ответе, проблема с вашим кодом и создание синглтона решит вашу проблему, но если вы хотите иметь более чистый код и лучший подход, вам следует использовать EventBus
by greenrobot.
Вы можете добавить его со следующей зависимостью:
implementation 'org.greenrobot:eventbus:3.1.1'
Тогда в вашем классе Activity подпишитесь на изменения со следующим кодом:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(ModelValue modelValue) {
Log.d("output", String.valueOf(modelValue.getA()));
}
Ииз ваших различных фрагментов вы можете отправлять значения следующим образом:
view.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(new ModelValue(4f));
}
});
Здесь ModelValue
- это мой класс POJO, вы можете создать свой в соответствии со своими потребностями.
Для получения дополнительной информации о EventBus
: https://github.com/greenrobot/EventBus