gpt4 book ai didi

java - 实例化SharedViewModel

转载 作者:行者123 更新时间:2023-12-03 10:31:13 25 4
gpt4 key购买 nike

我遵循Flow教程中的编码。在其中一个(使用共享ViewModel的2个片段之间进行通信,有一个废弃的方法ViewModelProviders.of(...:

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
viewModel.getText().observe(getViewLifecycleOwner(), new Observer<CharSequence>() {
@Override
public void onChanged(@Nullable CharSequence charSequence) {
editText.setText(charSequence);
}
});
}
作者解释说,应用知道何时销毁并重新创建ViewModel,因此我们不应该这样做。我找到了一种方法,它取代了已被废弃的ViewModelProviders:
//myNewMethod
viewModel= ViewModelProvider.AndroidViewModelFactory.getInstance(getActivity().getApplication()).create(SharedViewModel.class);
现在的问题是,此方法始终创建Shared ViewModel的新实例。因此,当我有两个片段时,该方法被调用两次并生成两个不同的共享ViewModels!
如何摆脱这一点,我应该在哪里实例化Shared ViewModel?主要 Activity 还是仍处于碎片状态?

最佳答案

问题解决了。我应该使用ViewModel而不是AndroidViewModel并使用实例化:

ViewModel= new ViewModelProvider(requireActivity()).get(SharedViewModel.class);

关于java - 实例化SharedViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63346531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com