我了解使用interface
是从Fragment
到Activity
进行通信的一种常用方法。但是,从Activity
到Fragment
进行交流的良好做法是什么?
在我的项目中,我的Activity
使用Fragments
托管了3个ViewPager
。我的Activity
当前正在从后端服务器侦听,每当我从后端服务器收到更新时,我都想以某种方式通知我的3 Fragments
。我尝试实现interface
方法,但是由于在片段中创建的片段是一个单独的类,而该类是{{1的子类, }}。
是否有比使用FragmentPagerAdapter
从interace
到Activity
进行通信更好/更清洁的方式?
答案 0 :(得分:2)
您可以尝试使用ViewModel在片段之间进行通信,这是android的官方文档。 这是您可以阅读的链接。 Share data between fragments 这是一个博客,用于了解实时数据link
这是示例
public class SharedViewModel extends ViewModel {
private final MutableLiveData<Item> selected = new MutableLiveData<Item>();
public void select(Item item) {
selected.setValue(item);
}
public LiveData<Item> getSelected() {
return selected;
}
}
public class MasterFragment extends Fragment {
private SharedViewModel model;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
itemSelector.setOnClickListener(item -> {
model.select(item);
});
}
}
public class DetailFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
model.getSelected().observe(this, { item ->
// Update the UI.
});
}
}