没有ViewModelProviders类的情况下如何获取ViewModel?

ozz*_*lee 4 android android-viewmodel

有关过去的问题如何获取ViewModel?,以及我找到的示例,它不能解决我的情况。我没有在此发表评论的权限,因此我不得不再次询问。我没有要在所有示例和文档中使用的“ of”方法使用的ViewModelProviders类,例如

model = ViewModelProviders.of(this).get(Something.class);
Run Code Online (Sandbox Code Playgroud)

在Android Studio中,我找不到要添加为依赖项的“ android.arch.lifecycle:extensions”。当我搜索时,它说“没什么可显示”。我使用的是API27。因此,尝试使用不推荐使用的元素,我在Fragment中添加了它:

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);
...
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

And*_*Res 7

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

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

    // ... 
}
Run Code Online (Sandbox Code Playgroud)

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