sag*_*uri 5 android android-fragments kotlin android-architecture-components
我正在开始一个新项目,我将与10个开发人员组成一个团队。我正在为我们的Android应用设置基础结构。在与团队合作时,我希望每个人都遵循相同的结构,即为ViewModel
每个人创建fragment
并使用数据绑定。我如何使其严格,以使开发人员在未ViewModel
为其片段创建代码时出错?
所以我创建了以下内容BaseFragment
:
abstract class BaseFragment<out VM : BaseViewModel, DB : ViewDataBinding> : Fragment() {
open lateinit var binding: DB
private fun init(inflater: LayoutInflater, container: ViewGroup?) {
binding = DataBindingUtil.inflate(inflater, getLayoutRes(), container, false)
}
@LayoutRes
abstract fun getLayoutRes(): Int
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View {
init(inflater, container)
super.onCreateView(inflater, container, savedInstanceState)
return binding.root
}
open fun refresh() {}
}
Run Code Online (Sandbox Code Playgroud)
我该如何进一步改善?
Aut*_*Cat -1
改进基本片段的可能方法之一是reified
像这样使用:
protected inline fun <reified T : ViewModel> getViewModel(): T =
ViewModelProviders.of(this)[T::class.java]
Run Code Online (Sandbox Code Playgroud)
调用是:
private val loginViewModel: LoginViewModel = getViewModel()
Run Code Online (Sandbox Code Playgroud)
https://proandroiddev.com/how-reified-type-makes-kotlin-so-much-better-7ae539ed0304
归档时间: |
|
查看次数: |
371 次 |
最近记录: |