我正在研究Android ViewModel架构组件,但在尝试初始化AppCompatActivity中的ViewModel时,我收到了上述错误。
import android.arch.lifecycle.ViewModelProviders;
ViewModelProviders.of(this).get(CounterViewModel.class);
有一些与此相关的问题和文章,他们指出在app gradle文件中添加lifecycle:extensions
和lifecycle:viewmodel
依赖项,但我仍然收到错误。
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "android.arch.lifecycle:viewmodel:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
软件包android.arch.lifecycle不包含类ViewModelProviders
,只有ViewModelProvider
类。
还需要添加哪些内容才能访问ViewModelProviders
类?
编辑:
app / build.gradle中的依赖关系:
dependencies {
implementation project(':lifecycle')
implementation project(':base')
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "android.arch.lifecycle:viewmodel:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}
答案 0 :(得分:8)
android.arch.lifecycle:extensions:1.1.1
肯定有android.arch.lifecycle.ViewModelProviders
。如果您打开"外部库"您可以在Android Studio中看到它。部分项目树并检查库内容:
找不到import
的一些可能原因包括:
您的implementation "android.arch.lifecycle:extensions:1.1.1"
位置错误(应该位于模块dependencies
文件的build.gradle
个关闭位置,例如app/build.gradle
)
您没有将Android Studio与Gradle构建文件同步(通常会提示您执行此操作,但您可以通过文件>从Android Studio主菜单中使用Gradle文件同步项目来手动执行此操作)
答案 1 :(得分:1)
ViewModelProviders
现在已弃用。请改用ViewModelProvider
。
答案 2 :(得分:0)
如果要在libary中进行配置,则可以将Notification notification = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notification.setSmallIcon(R.drawable.icon_transperent);
notification.setColor(getResources().getColor(R.color.notification_color));
} else {
notification.setSmallIcon(R.drawable.icon);
}
修改为implementation
答案 3 :(得分:0)
您不需要在build.gradle文件中同时使用lifecycle:extensions
和lifecycle:viewmodel
,将其删除
implementation "android.arch.lifecycle:viewmodel:1.1.1"
,现在应该可以了。另外,您可能需要迁移到AndroidX并使用该库的2.0.0版本。