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)
有什么解决办法吗?
| 归档时间: |
|
| 查看次数: |
2617 次 |
| 最近记录: |