Husen
Husen

Reputation: 315

Button in dialog always return null in onStart() in a Fragment

I have Dialog in Fragment. when I click on the OK button inside the dialog, I get null object reference error.

fun showDialog(){
        //get Dialog : Numbers
        val dialogView = LayoutInflater.from(context)
            .inflate(R.layout.dialog_b, null)
        //AlertDialog builder
        val dialogBuilder = AlertDialog.Builder(context)
            .setView(dialogView)
        //Show Dialog
        val alertDialog = dialogBuilder.show()

        //setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        dialogView.btn_ok.setOnClickListener {

            Log.d("Clicked", et_one.text.toString())

            alertDialog.dismiss()
        }
     }

Logcat

java.lang.IllegalStateException: et_one must not be null at com.example.algorithmsapp.AlgorithmsFragments.BFragment$onStart$1$1.onClick(BFragment.kt:63)
     

Upvotes: 1

Views: 247

Answers (1)

Nimesh Patel
Nimesh Patel

Reputation: 1496

You need to intialise Edittext here to fetch value from edittext. Add below line your code

var et_one: EditText
var btn_ok: Button
    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)

So Your Code Look Like This:

 fun showDialog(){
    //get Dialog : Numbers
    val dialogView = LayoutInflater.from(context)
        .inflate(R.layout.dialog_b, null)
    //AlertDialog builder
    val dialogBuilder = AlertDialog.Builder(context)
        .setView(dialogView)
    //Show Dialog
    val alertDialog = dialogBuilder.show()
    var et_one: EditText
    var btn_ok: Button

    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)
    //setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    dialogView.btn_ok.setOnClickListener {

        Log.d("Clicked", et_one.text.toString())

        alertDialog.dismiss()
    }
 }

Upvotes: 1

Related Questions