如何在 BaseFragment() 中传递片段布局
How to pass fragment layout inside BaseFragment()
我有一个从 Fragment
延伸的 BaseFragment
目前我的BaseFragment是这个
open class BaseFragment : Fragment() {
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)
}
...
问题是,当我扩展这个片段时,我需要像往常一样使用 onCreateView,但我想要完成的是在扩展时使用 BaseFragment(LayoutResource) 中的片段布局作为可选,就像片段重载方法一样
/**
* Alternate constructor that can be used to provide a default layout
* that will be inflated by {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}.
*
* @see #Fragment()
* @see #onCreateView(LayoutInflater, ViewGroup, Bundle)
*/
@ContentView
public Fragment(@LayoutRes int contentLayoutId) {
this();
mContentLayoutId = contentLayoutId;
}
如何在我的 BaseFragment 中实现这个功能?所以当我扩展它时我可以做
class A: BaseFragment(R.layout.myFragment)
或
class A: BaseFragment()
onCreateView(...) { ... }
谢谢!
只需让主构造函数将参数传递给超级构造函数即可。提供默认值零,您也可以将其用作 no-arg 构造函数:
open class BaseFragment(@LayoutRes contentLayoutId : Int = 0) : Fragment(contentLayoutId) {
/// your class body
}
我有一个从 Fragment
延伸的 BaseFragment目前我的BaseFragment是这个
open class BaseFragment : Fragment() {
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)
}
...
问题是,当我扩展这个片段时,我需要像往常一样使用 onCreateView,但我想要完成的是在扩展时使用 BaseFragment(LayoutResource) 中的片段布局作为可选,就像片段重载方法一样
/**
* Alternate constructor that can be used to provide a default layout
* that will be inflated by {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)}.
*
* @see #Fragment()
* @see #onCreateView(LayoutInflater, ViewGroup, Bundle)
*/
@ContentView
public Fragment(@LayoutRes int contentLayoutId) {
this();
mContentLayoutId = contentLayoutId;
}
如何在我的 BaseFragment 中实现这个功能?所以当我扩展它时我可以做
class A: BaseFragment(R.layout.myFragment)
或
class A: BaseFragment()
onCreateView(...) { ... }
谢谢!
只需让主构造函数将参数传递给超级构造函数即可。提供默认值零,您也可以将其用作 no-arg 构造函数:
open class BaseFragment(@LayoutRes contentLayoutId : Int = 0) : Fragment(contentLayoutId) {
/// your class body
}