6

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.enter image description here

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?

EpicPandaForce
  • 79,669
  • 27
  • 256
  • 428
ch65
  • 321
  • 3
  • 8

0 Answers0