我正在使用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
}