注入自定义Application类



我正在使用Hilt,并试图将我的应用程序注入另一个活动:

@HiltAndroidApp
public class MyApplication extends Application {
...
}
@AndroidEntryPoint
public class MyActivity extends AppCompatActivity {
@Inject
protected MyApplication application;
...
}

我得到以下错误:

error: [Dagger/MissingBinding] com.test.MyApplication cannot be provided without an @Inject constructor or an @Provides-annotated method.

我认为我可以为MyApplication编写一个提供者,但我认为Hilt默认已经这样做了。假设我可以注入基础应用程序;类,但我想获得我的覆盖应用程序类。当然,每次我想使用它时都不需要强制转换它

Hilt只提供Application类实例,这个实例在插件重写你的MyApplication类后被播种到Singleton组件。

你可以创建自己的模块,它将从Application对象进行转换,并通过将模块设置为在单例组件中工作来重用它。

@Module
@InstallIn(Singleton::class)
class MyApplicationModule {
@Provides
fun providesString(application: MyApplication): String {
return application.toString()
}
@Provides fun providesMyApplicationInstance(application: Application) : MyApplication = application as MyApplication
}

相关内容

最新更新