我试图从当前片段中调用另一个片段时遇到错误

时间:2019-12-06 19:40:14

标签: android kotlin

package com.example.android.finalproject
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.firebase.ui.database.FirebaseRecyclerAdapter
import com.firebase.ui.database.FirebaseRecyclerOptions
import com.google.firebase.database.*
import kotlinx.android.synthetic.main.department_view.view.*

/**
 * A simple [Fragment] subclass.
 */
class RecyclerViewFragment : Fragment() {
    lateinit var  ref: DatabaseReference


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val root = inflater.inflate(R.layout.fragment_recycler_view, container, false)


        ref = FirebaseDatabase.getInstance().getReference().child("Departments")
        val deptRecyclerView = root.findViewById<RecyclerView>(R.id.recycler_view)
        deptRecyclerView.layoutManager = LinearLayoutManager(activity!!,RecyclerView.VERTICAL,false)

        firebaseData(ref,deptRecyclerView)

        return root
    }

    private fun firebaseData(ref: DatabaseReference, deptRecyclerView: RecyclerView?) {

        val option = FirebaseRecyclerOptions.Builder<deptData>()
            .setQuery(ref,deptData::class.java)
            .setLifecycleOwner(this)
            .build()

        val firebaseRecyclerAdapter =
            object : FirebaseRecyclerAdapter<deptData, MyViewHolder>(option) {


                override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
                    val itemView =
                        LayoutInflater.from(activity).inflate(R.layout.department_view, parent, false)
                    return MyViewHolder(itemView)
                }



                override fun onBindViewHolder(holder: MyViewHolder, position: Int, model: deptData) {
                    val placeid = getRef(position).key.toString()
                    holder.setdata(placeid,position)



                    ref.child(placeid).addValueEventListener(object : ValueEventListener {
                        override fun onCancelled(p0: DatabaseError) {
                            Toast.makeText(
                                activity,
                                "Error Occurred " + p0.toException(),
                                Toast.LENGTH_SHORT
                            ).show()

                        }

                        override fun onDataChange(p0: DataSnapshot) {

                            holder.txt_name.setText(model.name)

                        }
                    })

                }


            }
        deptRecyclerView!!.adapter = firebaseRecyclerAdapter
        firebaseRecyclerAdapter.startListening()
        class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)

    }

    inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
    {
        fun setdata(placeid: String,pos:Int) {
            itemView.department_name.text=placeid
        }

        init{

            itemView.setOnClickListener(View.OnClickListener {
                val tempInt = 1
                println(itemView.department_name.text)
               val intent= Intent(this,CourseFragment::class.java)
                /*if(myListener != null){
                    if(adapterPosition != androidx.recyclerview.widget.RecyclerView.NO_POSITION){
                        myListener!!.onItemClickedFromAdapter(items[adapterPosition])
                    }
                }*/
            })


        }
        internal var txt_name: TextView = itemView.findViewById(R.id.department_name)
    }

}

我必须从当前片段中调用另一个片段。我正打算这样做。我还需要将变量传递给片段。我有一个需要发送到新片段的变量。是否有其他替代方法可以达到目的。传递意图中的第一个参数时出错

0 个答案:

没有答案