小编Arp*_* J.的帖子

使用约束布局开发电视 Android 应用程序

我想知道为什么Android 开发人员文档建议使用视图组,例如Relative LayoutLinear Layout安排视图来开发 TV Android 应用程序,而不是当前的标准,即Constraint Layout

有什么具体原因吗?我需要对此有一些想法。

android-linearlayout viewgroup android-relativelayout android-tv android-constraintlayout

11
推荐指数
0
解决办法
583
查看次数

lateinit属性viewModelFactory尚未在Fragment中初始化

我在我的android项目中使用匕首2(版本2.15)进行依赖项注入。除了注入viewModelFactory之外,其他一切都正常。我无法将其插入片段中。

@Inject
lateinit var viewModelFactory: ViewModelProvider.Factory

private val mainViewModel: StationsViewModel by lazy {
    ViewModelProviders.of(this, viewModelFactory)
            .get(StationsViewModel::class.java)
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

lateinit property viewModelFactory has not been initialized
Run Code Online (Sandbox Code Playgroud)

我有ViewModelModule:

@Module
abstract class ViewModelModule {

    @Binds
    @IntoMap
    @ViewModelKey(MainViewModel::class)
    internal abstract fun bindsMainViewModel(mainViewModel: 
    MainViewModel): ViewModel

    @Binds
    abstract fun bindViewModelFactory(factory: MyViewModelFactory): 
    ViewModelProvider.Factory
}
Run Code Online (Sandbox Code Playgroud)

ViewModelKey

@MustBeDocumented
@Target(
        AnnotationTarget.FUNCTION,
        AnnotationTarget.PROPERTY_GETTER,
        AnnotationTarget.PROPERTY_SETTER
)
@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)
Run Code Online (Sandbox Code Playgroud)

和ViewModelFactory

@Singleton
class MyViewModelFactory @Inject constructor(
        private val creators: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {
    override …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection mvvm dagger-2 android-viewmodel

7
推荐指数
1
解决办法
2439
查看次数