我正在开始一个新的项目,我将在一个10人的团队中工作。我正在为我们的Android应用程序设置基本结构。当我和一个团队一起工作时,我希望每个人都遵循相同的结构,即为每个fragment创建ViewModel并使用数据绑定。如果开发人员没有为他们的片段创建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() {}
}我如何才能进一步改进它?
发布于 2019-10-03 00:03:18
改进基本片段的一种可能方法是像这样使用reified:
protected inline fun <reified T : ViewModel> getViewModel(): T =
ViewModelProviders.of(this)[T::class.java]call是:
private val loginViewModel: LoginViewModel = getViewModel()有关此方法的有用链接:http://www.albertgao.xyz/2018/05/22/3-ways-to-handle-view-model-creation-in-android-with-dagger-and-kotlin/
How does the reified keyword in Kotlin work?
https://proandroiddev.com/how-reified-type-makes-kotlin-so-much-better-7ae539ed0304
https://stackoverflow.com/questions/56608785
复制相似问题