Транзакция от фрагмента к фрагменту в классе адаптера Android - PullRequest
1 голос
/ 11 июля 2020

Здравствуйте, я новичок в Android Разработка, и я создаю семейное приложение в Android Studio. Каждый раз, когда я хочу go перейти к другому фрагменту в классе адаптера, этот фрагмент перекрывает старый фрагмент.

Я хочу go на другое имя фрагмента SubFamilyFragment () из класса адаптера.

Я пробовал много способов из inte rnet, но не добился успеха.

Вот мой код класса адаптера


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.

...