此解决方案正确吗?还是应该为每个活动创建单独的FragmentBuildersModules?
@Suppress("unused")
@Module
abstract class ActivityModule {
@ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
abstract fun contributeMainActivity(): MainActivity
@ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
abstract fun contributeLoginActivity(): LoginActivity
}
答案 0 :(得分:0)
因此,最好为您的活动和片段创建一个单独的模块,然后将其包含在通用模块StringBuilder
中(它应该包含所有屏幕模块)
StringBuilder
活动模块:
Screen module
AppModule中包含屏幕模块:
@Module(includes = [
AndroidInjectionModule::class,
RegistrationModule::class,
SecondaryModule::class,
BaseFontActivityModule::class,
SurveyModule::class,
SplashModule::class])
interface ScreenModule {
@Binds
fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
}
答案 1 :(得分:0)
除非活动重用相同的片段,否则它们应依赖于不同的片段模块。造成这种情况的原因有两个:
1)您遵守SOLID的Single Responsibility Principle;
2)您的代码仍然易于阅读和重用(例如:如果只需要在另一个项目上重用活动之一,则可以轻松地将其及其依赖关系图移植);
3)您的代码更易于维护(例如:如果将来有人要使用您的代码,他们将立即知道哪些片段属于哪些活动);
4)您的代码不易出错(例如:如果您以某种方式弄乱了片段模块,它只会影响一项活动);
5)可能是我现在不记得的其他原因:)