我正在尝试将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条答案
按热度按时间wb1gzix01#
您应该将回调传递给
DisplaySchoolAdapter
并覆盖单个项目的setOnClickListener
侦听器并调用回调。您可以在适配器的其余部分中填写实现细节,但是
onBindViewHolder
是调用回调的位置。如果您需要向其中传递任何参数,那么可以在实现中随意添加这些参数。然后在片段中,当您示例化适配器时,您将传入您希望childfragment执行的操作。