Inflate fragment inside Dialog from RecyclerView adapter?

24 Views Asked by At

I have a recyler view with multiple cards in it. What i want to achieve is creating a dialog window every time the recycler view card is pressed. Inside the dialog, however, I have a FrameLayout - my goal is to add a custom fragment inside it. Is it possible?

What I currently have in my adapter.kt:

class GroupEntry_RecyclerViewAdapter(val context: Context, val ListOfPeople: MutableList<Person>) : RecyclerView.Adapter<GroupEntry_RecyclerViewAdapter.MyViewHolder>() {
     override fun onBindViewHolder(
             holder: MyViewHolder,
             position: Int
         ) {
            ...
            holder.nameField.setOnClickListener {
                     val dialog = DialogFragment(R.layout.pop_up_layout)
                     val ft = (context as FragmentActivity).supportFragmentManager.beginTransaction()
                     ft.replace(R.id.popUpFrame, HomeFragment())
                     dialog.show(ft, "dialog")
           }
       

My pop_up_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/popupLayout">

    <TextView
        android:id="@+id/top_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/pop_up_window"
        android:textSize="30sp"
        android:text="——"
        android:textAlignment="center"
        android:textColor="@color/tag_coral"/>

    <FrameLayout
        android:id="@+id/popUpFrame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/top_bar"
        />

</RelativeLayout>

The error i get is:

java.lang.IllegalArgumentException: No view found for id 0x7f09017a (id/popUpFrame) for fragment HomeFragment{ca1478} (2737d40d-0431-42e8-a25e-11d17e1d11b1 id=0x7f09017a)

at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)                                                                                                      at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)                                                                                                      at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)                                                                                                       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

Does anyone know what i might be doing wrong?

0

There are 0 best solutions below