首页 > 解决方案 > Adapter Class Android中的片段到片段事务

问题描述

您好,我是 Android 开发的新手,我正在 Android Studio 中创建一个家庭应用程序。每当我想去适配器类中的另一个片段时,片段就会与旧片段重叠。

我想从适配器类转到另一个片段名称 SubFamilyFragment()。

我从互联网上尝试了很多方法,但我没有成功。

这是我的适配器类代码


import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import com.example.mks.Fragments.SubFamilyFragment
import com.example.mks.Models.Family
import com.example.mks.R


class FamilyRecyclerAdapter(val context: Context, val familyList: ArrayList<Family>) : RecyclerView.Adapter<FamilyRecyclerAdapter.viewHolder>() {
    class viewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val familyName : TextView = view.findViewById(R.id.familyName)
        val familyMember : TextView = view.findViewById(R.id.familyMemberCount)
        val subFamily : CheckBox = view.findViewById(R.id.chkSubFamily)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): viewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.family_recycler_single_row,parent,false)

        return viewHolder(view)
    }

    override fun getItemCount(): Int {
        return familyList.size
    }

    override fun onBindViewHolder(holder: viewHolder, position: Int) {
        val number = familyList[position]
        holder.familyName.text = number.familyName
        holder.familyMember.text = number.familyMember.toString()
        holder.subFamily.text = number.subFamily.toString()

        holder.itemView.setOnClickListener {
            val activity : AppCompatActivity = it.context as AppCompatActivity

            if (number.subFamily){
//                val fragment2 = SubFamilyFragment()
//                val fragmentTransaction: FragmentTransaction = activity.supportFragmentManager.beginTransaction()
//                fragmentTransaction.replace(R.id.nav_host_fragment, fragment2)
//                fragmentTransaction.commit()

                val myFragment: Fragment = SubFamilyFragment()
                (it.getContext() as AppCompatActivity).supportFragmentManager.beginTransaction()
                    .replace(R.id.nav_host_fragment, myFragment).addToBackStack(null)
                    .commit()
            }
            else{
                Toast.makeText(context,"No Sub Family",Toast.LENGTH_SHORT).show()
            }
        }
    }
}```


This code is working but the fragment is overlapping.

Please tell me what to do.

标签: androidkotlinandroid-fragmentsandroid-recyclerviewandroid-adapter

解决方案


推荐阅读