代码之家  ›  专栏  ›  技术社区  ›  wbk727

尝试将片段添加到适配器时未找到childFragmentManager

  •  0
  • wbk727  · 技术社区  · 5 年前

    我试图使用适配器添加一些片段,但是 childFragmentManager 未找到:

    未解析的引用:childFragmentManager

    应该使用什么来解决此错误?

    class MyRVAdapter(private val myList: ArrayList<Item>) : RecyclerView.Adapter<MyRVAdapter.ViewHolder>() {
        override fun getItemCount(): Int {
            return myList.size
        }
    
        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            holder.myBtn.text = (myList[position].textBtnTitle)
         }
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
            val v = LayoutInflater.from(parent.context).inflate(R.layout.my_cv, parent, false)
    
            return ViewHolder(v)
        }
    
        class ViewHolder (itemView : View):RecyclerView.ViewHolder(itemView) {
            val myBtn = itemView.findViewById<Button>(R.id.btn_a)!!
    
            init {
                myBtn.setOnClickListener {
                    val builder = AlertDialog.Builder(myBtn.context)
                    builder.setTitle(myList[position].txtDialogTitle)
                    builder.setMessage(myList[position].txtDialogMessage)
                    builder.setPositiveButton(android.R.string.ok){ dialog, _ -> dialog.dismiss() }
    
                    val dialog: AlertDialog = builder.create()
                    dialog.show()
    
                    tabLayout = customView.findViewById(R.id.mTabLayout)
                    viewPager = customView.findViewById(R.id.mViewPager)
    
                    val adapter = TabbedDialogAdapter(childFragmentManager)
                    adapter.addFragment("Tab A", TabbedDialogFragment.createInstance("Description A"))
                    adapter.addFragment("Tab B", TabbedDialogFragment.createInstance("Description B"))
                    adapter.addFragment("Tab C", TabbedDialogFragment.createInstance("Description C"))
    
                    customView.mViewPager.adapter = adapter
                    customView.mTabLayout.setupWithViewPager(customView.mViewPager)
                }
            }
        }
    }
    

    选项卡对话框适配器

    class TabbedDialogAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
        private var mFragmentCollection: MutableList<Fragment> = ArrayList()
        private var mTitleCollection: MutableList<String> = ArrayList()
        fun addFragment(title: String, fragment: Fragment) {
            mTitleCollection.add(title)
            mFragmentCollection.add(fragment)
        }
    
        override fun getPageTitle(position: Int): CharSequence? {
            return mTitleCollection[position]
        }
    
        override fun getItem(position: Int): Fragment {
            return mFragmentCollection[position]
        }
    
        override fun getCount(): Int {
            return mFragmentCollection.size
        }
    }
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Hussnain Haidar    5 年前

    我认为viewHolder没有ChildFragmentManager的参考。 将childFragmentManager从片段/活动获取到适配器中

    class MyRVAdapter(private val myList: ArrayList<Item>, fm: FragmentManager) : RecyclerView.Adapter<MyRVAdapter.ViewHolder>() 
    
    
    return ViewHolder(v, fm)
    
    
    val adapter = TabbedDialogAdapter(fm)
    
    推荐文章