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)
我该怎么办?
打开app/build.gradle,找到该dependencies块,然后将生命周期依赖项手动添加到列表中:
dependencies {
implementation 'android.arch.lifecycle:extensions:1.1.1'
// ...
}
Run Code Online (Sandbox Code Playgroud)
同步项目,之后您应该能够获得ViewModel的实例。