java Kotlin:未附加片段,无法实例化调用片段常量的片段导致异常
我正在尝试将childFragmentManager从片段传递到适配器。当前片段是从不同的片段而不是活动调用的
fragment类有一个val
class DisplaySchoolFrag : BaseFragment<binding, DisplaySchoolViewModel>{
...
private val adapter = DisplaySchoolAdapter(childFragmentManager)
在适配器中,我只有childFrag的const声明,目前没有其他用法
class DisplaySchoolAdapter(childFrag: FragmentManager) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
我需要适配器中的childFragmentManager,因为在适配器类中有一个按钮,它指向底部的片段
FragmentHostCallback<?> mhost
getChildFrar(){
if (this.mHost == null) {
throw new IllegalStateException("Fragment " + this + " has not been attached yet.");
这一行导致片段未附加,无法实例化调用Fragment const引起异常的片段
我试过这个
lateinit var childFrag : FragmentManager
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
childFrag = childFragmentManager
return super.onCreateView(inflater, container, savedInstanceState)
}
并且将childFrag传递到DisplaySchoolAdapter(childFrag)声明中,仍然会得到错误
# 1 楼答案
您应该将回调传入
DisplaySchoolAdapter
,并重写单个项的setOnClickListener
侦听器并调用回调您可以在适配器的其余部分中填写实现细节,但是
onBindViewHolder
是调用回调的地方。如果您需要向其中传递任何参数,那么可以在实现中随意添加这些参数然后在片段中,当您实例化适配器时,您将传入您希望childFragment执行的操作