注入自定义应用程序 class
Inject custom Application class
我正在使用 Hilt 并试图将我的应用程序注入另一个 activity:
@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 已经这样做了。假设我可以注入基础“应用程序”class,但我想获得我的覆盖应用程序class。当然没有每次我想使用它时都投射它。
Hilt 只为您提供 Application
class 实例,该实例会在插件重写您的 MyApplication
class 后植入到 Singleton
组件中。
您可以创建自己的模块,该模块将从 Application
对象进行转换,并通过将模块设置为在 Singleton 组件中工作来重用它。
@Module
@InstallIn(Singleton::class)
class MyApplicationModule {
@Provides
fun providesString(application: MyApplication): String {
return application.toString()
}
@Provides fun providesMyApplicationInstance(application: Application) : MyApplication = application as MyApplication
}
我正在使用 Hilt 并试图将我的应用程序注入另一个 activity:
@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 已经这样做了。假设我可以注入基础“应用程序”class,但我想获得我的覆盖应用程序class。当然没有每次我想使用它时都投射它。
Hilt 只为您提供 Application
class 实例,该实例会在插件重写您的 MyApplication
class 后植入到 Singleton
组件中。
您可以创建自己的模块,该模块将从 Application
对象进行转换,并通过将模块设置为在 Singleton 组件中工作来重用它。
@Module
@InstallIn(Singleton::class)
class MyApplicationModule {
@Provides
fun providesString(application: MyApplication): String {
return application.toString()
}
@Provides fun providesMyApplicationInstance(application: Application) : MyApplication = application as MyApplication
}