如何使用LiveData在Activity之间共享数据?

ch6*_*h65 6 android android-fragments android-fragmentactivity android-livedata mutablelivedata

我有两个 Activity 和一个 Fragment。我想在这些活动之间共享数据。事实上,当用户在MainActivity中更改FragmentA时,必须自动更新SecondActivity中的FragmentA。在此输入图像描述

我的视图模型:PlayerFragmentVM.java

 public class PlayerFragmentVM extends ViewModel {
     private MutableLiveData<Boolean> btnFavoriteClickedLiveData;

     public PlayerFragmentVM(){
         btnFavoriteClickedLiveData = new MutableLiveData<>();
     }

     public MutableLiveData<Boolean> getBtnFavoriteClickedLiveData() {
         return btnFavoriteClickedLiveData;
     }
}
Run Code Online (Sandbox Code Playgroud)

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);
          }
        });


   }

}
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?