Hilt :- 无法在 AppCompatActivity 中使用 @AndroidEntryPoint 获取 DefaultViewModelFactories 异常?
Hilt :- Not able to use the @AndroidEntryPoint in the AppCompatActivity getting DefaultV iewModelFactories exceptions?
我想在我的项目中使用 Hilt 获取助手 class 对象作为我的 activity 的公共对象。我已经尝试了下面的代码行
清单文件条目
<application
android:name=".application.AppController"
android:allowBackup="false"
我的AppControllerclass
@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'
请检查我的 class路径 下面的条目
classpath "com.google.dagger:hilt-android-gradle-plugin:2.36"
现在请检查我的 NVModule 模块 class 我在其中使用了 Hilt
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 class
@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: error: method getActivityFactory in class DefaultViewModelFactories cannot be applied to given types;
return DefaultViewModelFactories.getActivityFactory(this);
^
required: ComponentActivity,Factory
found: Hilt_AutomaticTestActivity
reason: actual and formal argument lists differ in length
请帮我解决这个问题
似乎是版本不匹配。使用以下版本:
// hilt
implementation 'com.google.dagger:hilt-android:2.36'
kapt 'com.google.dagger:hilt-android-compiler:2.36'
kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.36'
kaptTest 'com.google.dagger:hilt-android-compiler:2.36'
// implementation "androidx.hilt:hilt-navigation:1.0.0"
// implementation "androidx.hilt:hilt-navigation-fragment:1.0.0"
kapt 'androidx.hilt:hilt-compiler:1.0.0'
和
apply plugin: 'dagger.hilt.android.plugin'
和
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.36'
项目级别和应用级别的依赖版本必须相同。
像 :
类路径“com.google.dagger:hilt-android-gradle-plugin:2.38.1
和
实施“com.google.dagger:hilt-android:2.38.1”
kapt "com.google.dagger:hilt-android-编译器:2.38.1"
implementation "com.google.dagger:hilt-android:2.38.1"
kapt "com.google.dagger:hilt-android-compiler:2.38.1"
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt 'androidx.hilt:hilt-compiler:1.0.0'
对我有用
我想在我的项目中使用 Hilt 获取助手 class 对象作为我的 activity 的公共对象。我已经尝试了下面的代码行
清单文件条目
<application
android:name=".application.AppController"
android:allowBackup="false"
我的AppControllerclass
@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'
请检查我的 class路径 下面的条目
classpath "com.google.dagger:hilt-android-gradle-plugin:2.36"
现在请检查我的 NVModule 模块 class 我在其中使用了 Hilt
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 class
@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: error: method getActivityFactory in class DefaultViewModelFactories cannot be applied to given types; return DefaultViewModelFactories.getActivityFactory(this); ^ required: ComponentActivity,Factory found: Hilt_AutomaticTestActivity reason: actual and formal argument lists differ in length
请帮我解决这个问题
似乎是版本不匹配。使用以下版本:
// hilt
implementation 'com.google.dagger:hilt-android:2.36'
kapt 'com.google.dagger:hilt-android-compiler:2.36'
kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.36'
kaptTest 'com.google.dagger:hilt-android-compiler:2.36'
// implementation "androidx.hilt:hilt-navigation:1.0.0"
// implementation "androidx.hilt:hilt-navigation-fragment:1.0.0"
kapt 'androidx.hilt:hilt-compiler:1.0.0'
和
apply plugin: 'dagger.hilt.android.plugin'
和
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.36'
项目级别和应用级别的依赖版本必须相同。 像 : 类路径“com.google.dagger:hilt-android-gradle-plugin:2.38.1
和
实施“com.google.dagger:hilt-android:2.38.1” kapt "com.google.dagger:hilt-android-编译器:2.38.1"
implementation "com.google.dagger:hilt-android:2.38.1"
kapt "com.google.dagger:hilt-android-compiler:2.38.1"
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt 'androidx.hilt:hilt-compiler:1.0.0'
对我有用