Search code examples
androidxmlkotlinandroid-edittextandroid-alertdialog

Unable to get the data from EditText view in the alert dialog


I created an alertDialog which basically contains two editTexts to enter the data(component Id, component name).When the user clicks on yes button in the alert dialog new component is added to the datbase(as of now I haven't added any on click listeners for yes and no buttons in the dialog) but for some reason I can't get the data from the edit text. I'm new to android app development please help me out guys.....Thanks in Advance :)

Note : 1. I'm using viewModel.flag so that the alertDialog stays persistent with rotations.

  1. onCancel() method simply cancels the alertDialog(I intend to use this for updating certain parameters).

This is kotlin code which creates the alert dialogs.

fun onAddComponent()
    {
        val builder = AlertDialog.Builder(requireActivity())

        builder?.setTitle("New Component Info")
        val inflater = requireActivity().layoutInflater

        builder?.setView(inflater.inflate(R.layout.new_comp, null))

        builder?.setPositiveButton(R.string.Okay_button){ dialogInterface, which->
            viewModel.flag = false
            val editText : EditText? =  compAlert?.findViewById(R.id.new_Component)
            println(editText.toString())
        }
        builder?.setNegativeButton(R.string.NO){ dialogInterface, which->
            viewModel.flag = false
        }



            compAlert= builder?.create()
        compAlert?.setOnCancelListener{OnCancel()}
        viewModel.flag = true
        compAlert?.show()

    }

This is the xml layout which I inflated in the onAddComponent()

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <EditText
        android:id="@+id/new_Component"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="comp Id"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/new_component_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:hint="comp name"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="@+id/new_Component"
        app:layout_constraintStart_toStartOf="@+id/new_Component"
        app:layout_constraintTop_toBottomOf="@+id/new_Component" />
</androidx.constraintlayout.widget.ConstraintLayout>

Solution

  • To get the text inside the EditText you need to do editText.getText().toString() and NOT editText.toString() which you have in your code.

    In your code, editText.toString() will return the string representation of the editText object. See the documentation of String's toString() method here.