美文网首页
关于ViewModel使用的一个血案

关于ViewModel使用的一个血案

作者: 方可为友 | 来源:发表于2021-04-30 11:50 被阅读0次

关于ViewModel使用的一个血案: Caused by: java.lang.RuntimeException: Cannot create an instance of class com.example.demo043002.MainViewModel

在写一个关于ViewModel的demo,总是在运行期报错,百思不得其解:

Caused by: java.lang.RuntimeException: Cannot create an instance of class com.example.demo043002.MainViewModel
       at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:186)
       at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:164)
       at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:130)
       at com.example.demo043002.MainActivity.onCreate(MainActivity.kt:14)
       at android.app.Activity.performCreate(Activity.java:6975)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
       at android.os.Handler.dispatchMessage(Handler.java:105) 
       at android.os.Looper.loop(Looper.java:164) 
       at android.app.ActivityThread.main(ActivityThread.java:6541) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

代码很简单:

class MainViewModel extends ViewModel {
}
class MainActivity : AppCompatActivity() {
    val TAG="MainActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val mainViewModel=ViewModelProvider(this,ViewModelProvider.NewInstanceFactory()).get(MainViewModel::class.java)
        Log.e(TAG,"mainViewModel==null:"+(mainViewModel==null))
    }
}

同志们,发现问题没???其实就是MainViewModel的权限没有用public!!!,教训惨重啊,又浪费了半天时间

image.png

相关文章

  • 关于ViewModel使用的一个血案

    关于ViewModel使用的一个血案: Caused by: java.lang.RuntimeException...

  • Jetpack之-ViewModel

    ViewModel的使用 引入ViewModel 简单使用 使用ViewModel在两个fragment之间进行通...

  • LiveData源码解析

    0.前言 关于livedata的使用详情见LiveData+ViewModel+RxJava2+autoDispo...

  • Android jetpack :ViewModel

    本文主要是介绍如何简单使用viewmodel 1.创建自己的ViewModel 2.使用ViewModel 核心代...

  • ViewModel详解

    一、ViewModel使用 如图1,ViewModel使用很简单,只用将类继承ViewModel类即可 如图2,在...

  • Jetpack ViewModel组件其他使用方式-之四

    前言 前面介绍ViewModel时,说到ViewModel常与livedata联合使用;但是ViewModel不单...

  • JetPack组件学习ViewModel

    ViewModel的使用 1.需要先创建ViewModel类,继承自ViewModel重写onclear方法,使得...

  • ViewModel详解

    ViewModel是用来存储和管理UI相关数据的。 1、实现ViewModel ViewModel中一般使用Liv...

  • ViewModel原理解析

    关于viewmodel创建 从Android官网可以看到创建ViewModel的方法ViewModelProvid...

  • ViewModel的使用

    一、前言: 在页面(Activity/Fragment)很简单的情况下,通常我们会将UI交互,数据获取与处理等相关...

网友评论

      本文标题:关于ViewModel使用的一个血案

      本文链接:https://www.haomeiwen.com/subject/rbjnrltx.html