要保留来自子事件监听器的Firebase数据,并在重新创建片段/活动时避免重新加载,可以使用ViewModel和LiveData来解决这个问题。以下是一个包含代码示例的解决方法:
public class MyViewModel extends ViewModel {
private MutableLiveData firebaseData;
public LiveData getFirebaseData() {
if (firebaseData == null) {
firebaseData = new MutableLiveData<>();
loadDataFromFirebase();
}
return firebaseData;
}
private void loadDataFromFirebase() {
// 从Firebase加载数据并更新firebaseData对象
// 这里可以使用Firebase的监听器来监听数据更改并更新firebaseData对象
}
}
public class MyFragment extends Fragment {
private MyViewModel viewModel;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// 创建视图并设置布局
// 获取ViewModel实例
viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
// 观察LiveData对象的变化
viewModel.getFirebaseData().observe(this, new Observer() {
@Override
public void onChanged(Data data) {
// 当LiveData对象发生变化时,更新UI
// 可以在这里使用data对象来更新UI控件
}
});
return view;
}
}
通过使用ViewModel和LiveData,可以确保在重新创建片段/活动时不会重新加载Firebase数据。ViewModel会在片段/活动被销毁和重新创建时保持不变,LiveData对象会在数据发生变化时通知观察者更新UI。这样,在重新创建片段/活动时,可以保留之前加载的Firebase数据并避免重新加载。
上一篇:保留来自不同工作表的颜色