我有一个 ViewModel 类,就像在 体系结构指南 的 连接 ViewModel 和存储库 部分中定义的一样。当我运行我的应用程序时,出现运行时异常。有谁知道如何解决这个问题?我不应该注入 ViewModel 吗?有没有办法告诉 ViewModelProvider
使用 Dagger 创建模型?
public class DispatchActivityModel extends ViewModel {
private final API api;
@Inject
public DispatchActivityModel(API api) {
this.api = api;
}
}
由以下原因引起:java.lang.InstantiationException:java.lang.Class 在 android.arch.lifecycle.ViewModelProvider\(NewInstanceFactory.create(ViewModelProvider.java:143) 的 java.lang.Class.newInstance(Native Method) 处没有零参数构造函数在 android.arch.lifecycle.ViewModelProviders\)DefaultFactory.create(ViewModelProviders.java:143) 在 android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:128) 在 android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java: :96) 在 com.example.base.BaseActivity.onCreate(BaseActivity.java:65) 在 com.example.dispatch.DispatchActivity.onCreate(DispatchActivity.java:53) 在 android.app.Activity.performCreate(Activity.java: 6682) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 在 android。 app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityT hread$H.handleMessage(ActivityThread.java:1478) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main (ActivityThread.java:6121)
原文由 TheHebrewHammer 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要实现自己的
ViewModelProvider.Factory
。 Google 创建了一个示例应用程序,演示了如何将 Dagger 2 与 ViewModel 连接起来。 链接。你需要这5样东西:在视图模型中:
定义注释:
在 ViewModelModule 中:
在片段中:
工厂: