I have two Activity and one Fragment. I want to share data between these Activities. In fact, when the user changed FragemtA in MainActivity, must be update FragmentA in SecondActivity automatically.
My ViewModel: PlayerFragmentVM.java
public class PlayerFragmentVM extends ViewModel {
private MutableLiveData<Boolean> btnFavoriteClickedLiveData;
public PlayerFragmentVM(){
btnFavoriteClickedLiveData = new MutableLiveData<>();
}
public MutableLiveData<Boolean> getBtnFavoriteClickedLiveData() {
return btnFavoriteClickedLiveData;
}
}
PlayerFragment.java
public class PlayerFragment extends Fragment {
private FragmentPlayerBinding fragmentPlayerBinding;
private PlayerFragmentVM playerFragmentVM;
private ShineButton btnFavorite;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//init view binding
fragmentPlayerBinding = FragmentPlayerBinding.inflate(inflater, container, false);
View view = fragmentPlayerBinding.getRoot();
//init ViewModel
playerFragmentVM = ViewModelProviders.of(this).get(PlayerFragmentVM.class);
//button checked change listener
btnFavorite.setOnCheckStateChangeListener(new ShineButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(View view, boolean checked) {
//checked or not
playerFragmentVM.getBtnFavoriteClickedLiveData().setValue(checked);
}
});
//observe button checked change
playerFragmentVM.getBtnFavoriteClickedLiveData().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(Boolean checked) {
//apply changes on View
btnFavorite.setChecked(checked);
}
});
}
}
Is there any solution for do this?