Skip to content

Repository files navigation

SharedViewModelFragment

pengganti bundle

def lifecycle_version ="2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
  • SharedVM.java
publicclassSharedVMextendsViewModel {
privatefinalMutableLiveData<String> selected = newMutableLiveData<>();
voidselect(Stringitem) {
selected.setValue(item);
}
LiveData<String> getSelected() {
returnselected;
}
}
  • MainActivity.java
publicclassMainActivityextendsAppCompatActivity {
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFragment();
}
privatevoidinitFragment() {
FragmentManagerfragmentManager = getSupportFragmentManager();
FragmentTransactionfragmentTransaction = fragmentManager.beginTransaction();
Fragmentfragment = newSecondFragment();
fragmentTransaction.replace(R.id.fr_2, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
  • FirstFragment.java
publicclassFirstFragmentextendsFragment {
privateSharedVMmodel;
@OverridepublicvoidonCreate(@NullableBundlesavedInstanceState) {
super.onCreate(savedInstanceState);
model = newViewModelProvider(getActivity()).get(SharedVM.class);
}
privateFragmentFirstBindingbinding;
publicFirstFragment() {
}
@OverridepublicViewonCreateView(@NonNullLayoutInflaterinflater, ViewGroupcontainer,
BundlesavedInstanceState) {
binding = FragmentFirstBinding.inflate(inflater);
returnbinding.getRoot();
}
@OverridepublicvoidonViewCreated(@NonNullViewview, @NullableBundlesavedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.btnFr1.setOnClickListener(v -> model.select(binding.tvFr1.getText().toString()));
}
}
  • SecondFragment.java
publicclassSecondFragmentextendsFragment {
FragmentSecondBindingbinding;
publicSecondFragment() {
}
@OverridepublicViewonCreateView(LayoutInflaterinflater, ViewGroupcontainer,
BundlesavedInstanceState) {
binding = FragmentSecondBinding.inflate(inflater);
returnbinding.getRoot();
}
@OverridepublicvoidonViewCreated(@NonNullViewview, @NullableBundlesavedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SharedVMmodel = newViewModelProvider(getActivity()).get(SharedVM.class);
model.getSelected().observe(getViewLifecycleOwner(), s -> {
binding.tvFr2.setText(s);
});
}
}

Copyright 2020 M. Fadli Zein

About

pengganti bundle

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages