Java Android LiveData,无法创建类viewModel的实例
按照给出的示例,我扩展了ViewModel类Java Android LiveData,无法创建类viewModel的实例,java,android,viewmodel,android-livedata,Java,Android,Viewmodel,Android Livedata,按照给出的示例,我扩展了ViewModel类 public class NameViewModel extends ViewModel { private MutableLiveData<String> currentName; public MutableLiveData<String> getCurrentName() { if (currentName == null) { currentName = new MutableLiveData
public class NameViewModel extends ViewModel {
private MutableLiveData<String> currentName;
public MutableLiveData<String> getCurrentName() {
if (currentName == null) {
currentName = new MutableLiveData<String>();
}
return currentName;
}}
运行此代码无法创建类NameViewModel的实例,我在这里做错了什么?但代码似乎没有任何问题 你能检查一下你的build.gradle中是否有这个特定的依赖版本吗
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
您可以添加build.gradle吗?您是否应该在
ViewModel
中添加一个空构造函数,调用super()
?我将NameViewModel与NameActivity放在同一个java文件中,它应该放在单独的文件NameViewModel.java中,这修复了它。您缺少ViewModel类中的构造函数,因此添加public NameViewModel(){}编码>到您的ViewModel。改为:
model=newviewmodelprovider(this.get)(NameViewModel.class)代码>
试试这个:
model=newViewModelProvider(这是新的ViewModelProvider.AndroidViewModelFactory(getApplication()).get(NameViewModel.class)代码>您遇到车祸了吗?您可以从logcat粘贴日志(stacktrace)吗?虽然此代码可以回答问题,但提供有关此代码为什么和/或如何回答问题的附加上下文可以提高其长期价值。
dependencies {
def lifecycle_version = "2.2.0"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
// Lifecycles only (without ViewModel or LiveData)
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'