继承Fragment的类必须为public static class
错误的可能原因:
1、继承Fragment的类用inner修饰
inner class MyFragment() : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
...
}
}
2、继承Fragment的类定位为匿名内部类
fun setFragment(position: Int) {
val fm: FragmentManager = supportFragmentManager //得到FragmentManager
val ft: FragmentTransaction = fm.beginTransaction() //开启事务
ft.replace(R.id.fl_main, object :Fragment(){
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
...
}
})
//替换Fragment
ft.commit() //提交
}
正确的做法应该是:
class MyFragment() : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
...
}
}
fun setFragment(position: Int) {
val fm: FragmentManager = supportFragmentManager //得到FragmentManager
val ft: FragmentTransaction = fm.beginTransaction() //开启事务
ft.replace(R.id.fl_main, MyFragment())
//替换Fragment
ft.commit() //提交
}