android - 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.
解决方案
推荐阅读
- c++ - 在延迟加载的共享库中使用单例
- python - IndexError:列表索引超出范围,即使打印单个列表和索引似乎没有错误
- docker - docker容器中的rsyslog服务无法执行logrotation
- reactjs - 使用此处地图时出现授权错误
- excel - 如何识别分配给形状的宏
- html - 如何在不使用任何 Django 表单的情况下在 Django 框架中填充 html 输入?
- google-apps-script - 我怎样才能得到这个来保护基于脚本的工作表(Google Apps Script)?
- python-3.x - 在 VirtualBox Ubuntu 18.04 上使用 Rasa/Tensorflow 时出错
- c++ - 向自己发送终止信号
- database - 多线程应用程序中的单个连接VS共享数据库连接?