android view.java,无法创建AndroidViewModel的子类实例

我的ViewModel类是Java,我的Activity类在Kotlin中 . 我收到了错误

09-18 14:01:32.737 14082-14082 / com.meme.archcompwordlist E / AndroidRuntime:FATAL EXCEPTION:main进程:com.meme.archcompwordlist,PID:14082 java.lang.RuntimeException:无法启动活动ComponentInfo {com .meme.archcompwordlist / com.meme.archcompwordlist.MainActivity}:java.lang.RuntimeException:无法在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)的android下创建类com.meme.archcompwordlist.WordViewModel的实例位于android.app.Handler的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)的android.app.ActivityThread.-wrap12(ActivityThread.java)上的.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) .dispatchMessage(Handler.java:102)位于android.app.Looper.loop(Looper.java:154)的android.app.ActivityThread.main(ActivityThread.java:6119),位于java.lang.reflect.Method.invoke(本地方法)在com.android.internal.os.ZygoteInit的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) . main(ZygoteInit.java:776)引起:java.lang.RuntimeException:无法在android.arch.lifecycle.ViewModelProvider $ AndroidViewModelFactory.create(ViewModelProvider.java:207)处创建类com.meme.archcompwordlist.WordViewModel的实例android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)位于android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)的com.meme.archcompwordlist.MainActivity.onCreate(MainActivity.kt:37)在android.app.A活动中的android.app.Asetrumentation.callActivityCnate(Instrumentation.java:1118)上的android.app.A活动,活动开发活动(ActivityThread.java:2618)上的android.app.Activity.performCreate(Activity.java:6679) . Activity.Thread.handleLaunchActivity(ActivityThread.java:2726)位于android.app.Handler.dispatchMessage的android.app.ActivityThread.-wrap12(ActivityThread.java)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) Handler.java:102)在android.a.Looper.loop(Looper.java:154)android.a pp.ActivityThread.main(ActivityThread.java:6119)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)at com的java.lang.reflect.Method.invoke(Native Method) . android.internal.os.ZygoteInit.main(ZygoteInit.java:776)由java.lang.reflect.Constructor.newInstance中java.lang.reflect.Constructor.newInstance0(Native Method)的java.lang.reflect.InvocationTargetException引起(Constructor.java:430)位于android.arch.life循环的android.arch.lifecycle.ViewModelProvider $ AndroidViewModelFactory.create(ViewModelProvider.java:199)android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134) . 位于android.app.Instrumentation.callActivityOnCreate的android.app.Activity.performCreate(Activity.java:6679)的com.meme.archcompwordlist.MainActivity.onCreate(MainActivity.kt:37)中的ViewModelProvider.get(ViewModelProvider.java:102) (Instrumentation.java:1118)在android.app.ActivityThread的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) . handleLaunchActivity(ActivityThread.java:2726)位于Android.app.Handler.dispatchMessage(处理程序 . )的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)上的android.app.ActivityThread.-wrap12(ActivityThread.java) . java:102)在android.app.Looper.loop(Looper.java:154)的android.app.ActivityThread.main(ActivityThread.java:6119)at java.lang.reflect.Method.invoke(Native Method)at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)引起:java.lang.RuntimeException:找不到实现for com.meme.archcompwordlist.room.WordRoomDatabase . Word.RoomDatabase_Impl不存在于android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:93)的android.arch.persistence.room.RoomDatabase $ Builder.build(RoomDatabase.java:630)com.meme.archcompwordlist .room.WordRoomDatabase.getRoomDatabase(WordRoomDatabase.java:22)位于com.meme.archcompwordlist.WordRepository . (WordRepository.java:21),位于java.lang的com.meme.archcompwordlist.WordViewModel . (WordViewModel.java:22) . 位于android.arch的android.arch.lifecycle.ViewModelProvider $ AndroidViewModelFactory.create(ViewModelProvider.java:199)的java.lang.reflect.Constructor.newInstance(Constructor.java:430)中的reflect.Constructor.newInstance0(Native Method) . android.appme.archcompa上的com.meme.archcompword.MainActivity.onCreate(MainActivity.kt:37)中的android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)生命周期.ViewModelProvider.get(ViewModelProvider.java:134) .Activity.performCreate(Activity.java:6679)在android.app.Instrumentation.callActivityOnCreate(Instrume) ntation.java:1118)在android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2618)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)at atandroid.app.A活动中的android.app.ActivityThread.-wrap12(ActivityThread.java)在Android.os上的android.app.Handler.dispatchMessage(Handler.java:102)上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) . 位于android.app.ActivityThread.main(ActivityThread.java:6119)的looper.loop(Looper.java:154)位于com.android.internal.os.ZygoteInit $的java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.ZygoteInit.main中的MethodAndArgsCaller.run(ZygoteInit.java:886)(ZygoteInit.java:776)

这是我的AndroidViewModel类

public class WordViewModel extends AndroidViewModel {

private WordRepository repository;

private LiveData> allWords;

public WordViewModel(Application application){

super(application);

repository = new WordRepository(application);

allWords = repository.getAllWords();

}

public LiveData> getAllWords(){

return allWords;

}

public void insert(WordEntity word){

repository.insert(word);

}

public void deleteAllWords() {

repository.deleteAllWords();

}

}

这是我的活动课

class MainActivity : AppCompatActivity() {

private lateinit var wordViewModel:WordViewModel

private lateinit var newWord:EditText

private lateinit var recyclerView:RecyclerView

private lateinit var adapter:WordAdapter

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

setSupportActionBar(toolbar)

adapter= WordAdapter()

recyclerView= findViewById(R.id.wordList)

recyclerView.adapter=adapter

//establish a connection to the current ViewModel

wordViewModel= ViewModelProviders.of(this).get(WordViewModel::class.java)

newWord = findViewById(R.id.insertWord);

findViewById(R.id.submitWord).setOnClickListener {

fun onClick(v:View?){

if(!TextUtils.isEmpty(newWord.getText())){

wordViewModel.insert(WordEntity(newWord.getText().toString()))

}

}

}

findViewById(R.id.deleteWords).setOnClickListener{

fun onClick(v:View?){

wordViewModel.deleteAllWords()

}

}

wordViewModel.getAllWords().observe(this,Observer>(){

fun onChanged(words:List){

adapter.setWords(words)

}

})

}

}

有人可以帮我辨别我做错了什么吗?我想在远离Android的很长一段时间后拿起架构组件 . 我不完全清楚如何继续 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值