【发布时间】:2020-11-02 17:14:02
【问题描述】:
我正在尝试实现一个 BaseFragment,我将在其中传递布局资源,它应该输出绑定以在片段本身中工作,而不是每次扩展片段时都需要这样做。
例如我有这个 BaseFragment
open class BaseFragment(@LayoutRes contentLayoutId : Int = 0) : Fragment(contentLayoutId) {
private lateinit var onInteractionListener: OnFragmentInteractionListener
val toolbar : Toolbar?
get() {
return if(activity is BaseActivity)
(activity as BaseActivity).toolbar
else
null
}
override fun onAttach(context: Context) {
super.onAttach(context)
setOnInteractionListener(context)
}
...
我在其中这样使用
class A(): BaseFragment(R.layout.myFragment) { ... }
现在,如果我使用它,我将需要在我的 onCreateView 中再次定义绑定类
class A(): BaseFragment(R.layout.myFragment) {
private lateinit var binding: MyFragmentBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.myFragment, container, false)
return binding.root
}
override fun onDestroy(){
binding = null
}
}
我想要实现的是,由于我将布局传递给我的 BaseFragment,我希望我的 BaseFragment 处理绑定的创建,并只返回我用来扩展 BaseFragment 的片段中的绑定
我想要的是这样的东西
class A(): BaseFragment(R.layout.myFragment) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.myTextView = ""
}
}
所以我的问题是,如何在 BaseFragment 中实现 onDestroy() 和 onCreateView 以始终从我传入的布局中为我创建绑定?
我听说我应该使用反射,但我不确定如何完成它
【问题讨论】:
标签: android kotlin android-fragments reflection fragment