【发布时间】:2021-08-18 00:41:23
【问题描述】:
我想在我的项目中使用 Hilt 来获取辅助类对象作为我活动的通用对象。我已经尝试了下面的代码行
清单文件条目
<application
android:name=".application.AppController"
android:allowBackup="false"
我的 AppController 类
@HiltAndroidApp
public class AppController extends Application implements Configuration.Provider {
}
请检查我的 gradles 文件
implementation "androidx.activity:activity-ktx:1.2.3"
implementation 'androidx.fragment:fragment-ktx:1.3.4'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
implementation 'com.google.dagger:hilt-android:2.36'
kapt 'androidx.hilt:hilt-compiler:1.0.0'
kapt 'com.google.dagger:hilt-android-compiler:2.31.2-alpha'
请检查下面我的 classPath 条目
classpath "com.google.dagger:hilt-android-gradle-plugin:2.36"
现在请检查我使用 Hilt 的 NVModule 模块 类
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
class NVModule {
@Provides
fun provideDeviceDiagnosticHelper(): DeviceDiagnosticHelper{
return DeviceDiagnosticHelper()
}
}
现在请检查我在其中注入 Hilt 对象的 Activity 类
@AndroidEntryPoint
public class AutomaticTestActivity extends AppCompatActivity {
private AutomaticTestPresenter automaticTestPresenter;
private AutomaticTestView automaticTestView;
ActivityDeviceDiagnosticBinding mBinding;
@Inject
DeviceDiagnosticHelper deviceDiagnosticHelper;
}
但我在运行应用程序时遇到以下异常,请检查一次
例外:-
/home/..../com/my/app/activity/Hilt_AutomaticTestActivity.java:70:错误:类 DefaultViewModelFactories 中的方法 getActivityFactory 不能应用于给定类型; 返回 DefaultViewModelFactories.getActivityFactory(this); ^ 必需:组件活动,工厂 找到: Hilt_AutomaticTestActivity 原因:实际参数列表和形式参数列表的长度不同
请帮我解决这个问题
【问题讨论】:
-
什么是
DeviceDiagnosticHelper?它是视图模型吗? -
@MayurGajra 这是我的助手类,它执行计算、获取静态列表等操作
-
我检查了您的示例代码,它与 Injecting
DeviceDiagnosticHelper一起工作正常。您的代码中是否有viewmodel声明?从例外来看,它似乎与此有关。如果是,那么您能否发布与此相关的代码? -
实际上,我正在使用 MVP 架构,但是我在类 Activity 中遇到异常,即
AutomaticTestActivity,它甚至不适用于 Simple 类,请检查一下一次,您需要哪个代码,请告诉我,也会在那里发布相关代码..请检查注释,我使用的是否正确..谢谢 -
奇怪的是,您根本没有使用
viewmodel并且仍然收到DefaultViewModelFactories错误。如果您的代码中没有实现viewmodel,那么我想这一定是一些代码生成错误。尝试删除build&Invalidate cache & Restart。
标签: java android android-studio android-activity dagger-hilt