Hel*_*oCW 7 dependency-injection kotlin dagger-hilt
代码A需要navigator通过依赖注入实例化一个对象,所以作者使用代码B来实现它,你可以在这里看到它。
很奇怪这个类在Code C中通过依赖注入AppNavigatorImpl实现了类AppNavigator,所以我觉得Code D会很好用。
我可以用 @Inject lateinit var navigator: AppNavigatorImpl代替@Binds abstract fun bindNavigator(impl: AppNavigatorImpl): AppNavigator吗?
代码 A
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var navigator: AppNavigator
...
}
Run Code Online (Sandbox Code Playgroud)
代码 B
@InstallIn(ActivityComponent::class)
@Module
abstract class NavigationModule {
@Binds
abstract fun bindNavigator(impl: AppNavigatorImpl): AppNavigator
}
Run Code Online (Sandbox Code Playgroud)
代码 C
class AppNavigatorImpl @Inject constructor(private val activity: FragmentActivity) : AppNavigator {
override fun navigateTo(screen: Screens) {
val fragment = when (screen) {
Screens.BUTTONS -> ButtonsFragment()
Screens.LOGS -> LogsFragment()
}
activity.supportFragmentManager.beginTransaction()
.replace(R.id.main_container, fragment)
.addToBackStack(fragment::class.java.canonicalName)
.commit()
}
}
Run Code Online (Sandbox Code Playgroud)
代码 D
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var navigator: AppNavigatorImpl
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |