new ViewModelProvider(this)中this报错

背景

ViewModelProviders.of(this)已弃用;

//MyViewModel myViewModel = ViewModelProviders.of(this).get(MyViewModel.class); 
// 已弃用

新方法:

MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class); 

但是有时候有人 this 会报错。
new ViewModelProvider(this)中 this 报错,是因为没有该构造方法。
没有该构造方法

解决方法

  1. 如果你需要 ViewModel 的其他组件,使用了其他依赖,可以解决问题
    implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0'
  1. 不需要其他依赖的话,可以转而使用:
MyViewModel myViewModel = new ViewModelProvider(this, 
		new ViewModelProvider.NewInstanceFactory()).get(MyViewModel.class);

创建 AndroidViewModel 应使用:

MyViewModel myViewModel = new ViewModelProvider(this,
		new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(MyViewModel.class);
  1. 另一种方式是(不推荐,lifecycle-extensions其实也已弃用)
 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

猜你喜欢

转载自blog.csdn.net/zsq8187/article/details/109087798
new