- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在应用程序中实现架构组件,但在创建 androidViewModel 实例时遇到了问题。请帮我解决这个问题。
我在这里尝试创建 LoginViewModel 类的实例,但出现以下错误
错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.addonitservices.uphaar, PID: 22975
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.addonitservices.uphaar/com.addonitservices.uphaar.login.LoginActivity}: java.lang.RuntimeException: Cannot create an instance of class com.addonitservices.uphaar.login.LoginViewModel
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.RuntimeException: Cannot create an instance of class com.addonitservices.uphaar.login.LoginViewModel
at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:201)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)
at com.addonitservices.uphaar.login.LoginActivity.initViewModel(LoginActivity.kt:27)
at com.addonitservices.uphaar.login.LoginActivity.onCreate(LoginActivity.kt:22)
at android.app.Activity.performCreate(Activity.java:6999)
at android.app.Activity.performCreate(Activity.java:6990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NoSuchMethodException: <init> [class android.app.Application]
at java.lang.Class.getConstructor0(Class.java:2320)
at java.lang.Class.getConstructor(Class.java:1725)
at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:199)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)
at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)
at com.addonitservices.uphaar.login.LoginActivity.initViewModel(LoginActivity.kt:27)
at com.addonitservices.uphaar.login.LoginActivity.onCreate(LoginActivity.kt:22)
at android.app.Activity.performCreate(Activity.java:6999)
at android.app.Activity.performCreate(Activity.java:6990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Activity
import android.arch.lifecycle.ViewModelProvider
import android.arch.lifecycle.ViewModelProviders
import android.databinding.DataBindingUtil
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.addonitservices.uphaar.R
import com.addonitservices.uphaar.base.BaseActivity
import com.addonitservices.uphaar.databinding.ActivityLoginBinding
import com.mukesh.countrypicker.CountryPicker
class LoginActivity : BaseActivity() {
private lateinit var binding: ActivityLoginBinding
private lateinit var viewModel:LoginViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
binding.view = this
initViewModel()
}
private fun initViewModel(){
viewModel = ViewModelProviders.of(this).get(LoginViewModel::class.java)
viewModel.initCountryPicker(getString(R.string.select_country))
binding.viewModel =viewModel
}
fun onClick(view: View) {
when (view.id) {
R.id.btnLogin -> {}
R.id.tvForgotPassword -> {}
R.id.layoutCountryCode -> viewModel.showCountryPickerDialog(supportFragmentManager)
R.id.tvSignUp -> {}
}
}
}
View 模型
import android.arch.lifecycle.MutableLiveData
import android.support.v4.app.FragmentManager
import com.addonitservices.uphaar.base.ApplicationClass
import com.addonitservices.uphaar.base.BaseViewModel
import com.mukesh.countrypicker.CountryPicker
/**
* Created by bms on 6/6/18 added in com.addonitservices.uphaar.login
*/
class LoginViewModel(applicationClass: ApplicationClass) : BaseViewModel<LoginNavigator>(applicationClass) {
val countryCode = MutableLiveData<String>()
val flagImage = MutableLiveData<Int>()
val mobileNumber = MutableLiveData<String>()
val password = MutableLiveData<String>()
private var countryPicker:CountryPicker? = null
fun initCountryPicker(message:String){
countryPicker = CountryPicker.newInstance(message)
countryPicker?.setListener { name, code, dialCode, flag ->
flagImage.value=flag
countryCode.value = dialCode
}
}
fun showCountryPickerDialog(fragmentManager:FragmentManager){
countryPicker?.show(fragmentManager,"COUNTRY_PICKER")
}
}
基础 View 模型
open class BaseViewModel<N>(applicationClass: ApplicationClass) :AndroidViewModel(applicationClass) {
var mNavigator: N? = null
}
最佳答案
LoginViewModel(applicationClass: ApplicationClass)
应该是
LoginViewModel(application: android.app.Application)
关于android - 无法创建 AndroidViewModel 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755216/
我目前正在挖掘 Android Room with a View示例应用程序,提供完整源代码 here .在这个项目中,一个 WordViewModel 类型 AndroidViewModel被定义为
我的问题与 ViewModel second time returns null 有关其中,如果我重复调用服务器,我不会在 observe 函数中得到回调。以下是我正在使用的代码 - @Singlet
documentation声明如下: If the ViewModel needs the Application context, for example to find a system serv
我正在使用 AndroidViewModel与 LiveData将 Intent 发送到 IntentService并从 EventBus 接收事件。我需要 Intent 和 EventBus 的应用
这个问题在这里已经有了答案: AndroidViewModel instantiated without passing application context? (2 个回答) 1年前关闭。 我正在
我想使用 AndroidViewModel对于我的 View 模型,以便访问 Context .它需要 Application作为参数传递。我的 ViewModel 类如下所示: class FooA
随着 Android 架构组件库的引入,引入了几个新类,包括 AndroidViewModel 和 ViewModel。但是,我无法弄清楚这两个类之间的区别。 documentation简明扼要地描述
我几乎在整个互联网上搜索了我的问题,但找不到我需要的答案。 是的。我的问题不是唯一的,但没有答案,这可以帮助我。 所以我决定自己问。 现在关于问题: public class AuthActivity
我需要使用 AndroidViewModel带有应用程序上下文和 SavedStateHandle .我已经将它与应用程序上下文一起使用,但我无法添加 SavedStateHandle给它。 这就是我
我正在尝试在应用程序中实现架构组件,但在创建 androidViewModel 实例时遇到了问题。请帮我解决这个问题。 我在这里尝试创建 LoginViewModel 类的实例,但出现以下错误 错误
我想为通过进行改造调用来执行注册的方法编写单元测试,并且该方法位于 AndroidViewModel 类中。如何测试该方法? public class SignUpViewModel extends
我的 ViewModel 类是用 Java 编写的,我的 Activity 类是用 Kotlin 编写的。我收到错误 09-18 14:01:32.737 14082-14082/com.meme.a
我正在为我的应用程序编写单元测试,并且在编写它们时发现了一个“减速带”。在测试 AndroidViewModel 的子类时,我缺少用于初始化的 Application 参数。我已经读过 this qu
这个问题在这里已经有了答案: AndroidViewModel vs ViewModel (3 个回答) 4年前关闭。 对于任何有这个问题的人, 根据 Android 文档, Since the Vi
我目前正在调查 Dagger2 的使用情况在我的 Android 应用程序中。 implementation 'com.google.dagger:dagger:2.21' annotationPro
我说很奇怪,因为我不明白有人可能会告诉我什么正在按预期工作。 我有一个带有 LiveData 成员的 AndroidViewModel,我在 MainActivity 中观察到这些成员来切换一些代码功
有人为 Fragment 编写了两个扩展函数(代码 A2)和 FragmentActivity实例化一个 ViewModel ,效果很好,可以看到 Code A1 和 Code A3。 我希望为 Fr
你知道这个图书馆吗? https://github.com/inloop/AndroidViewModel为什么命名为ViewModel?我认为这就是MVP模式。 最佳答案 我是作者之一。这只是一个命
我正在寻找一种方法来初始化 ViewModel 中的 LiveData 对象。当前仅在从 Activity 调用 setQuery 方法时才初始化项目。 public class MyListView
AndroidViewModel 用于访问 Application 上下文。我正在尝试访问 Activity 的 FragmentManager 而不显式传递它: class FooViewModel
我是一名优秀的程序员,十分优秀!