当前位置 : 主页 > 手机开发 > android >

android – 如何在没有ViewModelProviders类的情况下获得ViewModel?

来源:互联网 收集:自由互联 发布时间:2021-06-11
关于过去的问题 How to get a ViewModel?,以及我发现的例子,它并没有解决我的问题.我没有在那里发表评论的许可,所以我不得不再问一遍.我没有ViewModelProviders类,我想在我找到的所有示例和文
关于过去的问题 How to get a ViewModel?,以及我发现的例子,它并没有解决我的问题.我没有在那里发表评论的许可,所以我不得不再问一遍.我没有ViewModelProviders类,我想在我找到的所有示例和文档中使用“of”方法,比如

model = ViewModelProviders.of(this).get(Something.class);

在Android Studio中,我没有找到“android.arch.lifecycle:extensions”作为依赖项添加.当我搜索时,它说“无需显示”.我在API 27.
因此,尝试使用未弃用的元素,我在片段中有这个:

public class EventDetailsFragment extends Fragment
{
EventViewModel viewModel;

@Override
public void onActivityCreated (Bundle savedInstanceState)
{
    super.onActivityCreated(savedInstanceState);
    ViewModelProvider.Factory factory = ViewModelProvider.AndroidViewModelFactory.getInstance(getActivity().getApplication());
    // HERE IS THE ISSUE: Seems not good practice to have to create a new ViewModelProvider every time this Fragment is created. 
    // Perhaps I should just create a singleton ViewModelProvider in the Activity or Application, 
    // so here could call getActivity().getViewModelProvider(this, factory).
    ViewModelProvider viewModelProvider = new ViewModelProvider(this, factory);
    viewModel = viewModelProvider.get(EventViewModel.class);
...
}

我该怎么办?

打开app / build.gradle,找到依赖项块并手动将生命周期依赖项添加到列表中:

dependencies {
    implementation 'android.arch.lifecycle:extensions:1.1.1'

    // ... 
}

同步项目,之后您应该能够获得ViewModel的实例.

网友评论