Android - Custom Dialog - Can't get text from EditText

Viewed 56101

I have a problem with a custom dialog.
My dialog consists of a TextView, EditText and an "Ok" Button. After clicking "Ok", it should get the text from EditText field and assign it to the String variable "name" defined in the Activity.
Everything seems to work, no errors etc, however "text" is always an empty String.
I read some topics about such problems, however I'm not really sure what adjustments I should make here.
I'm quite new to Android programming, so I'd be grateful if somebody could explain the problem to me. Thanks in advance.

     final Dialog dialog = new Dialog(MyActivity.this);
     dialog.setContentView(R.layout.custom_dialog);
     dialog.setTitle("Title");

     final View layout = View.inflate(this, R.layout.custom_dialog, null);
     Button button = (Button) dialog.findViewById(R.id.dialog_ok);
     button.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
                EditText edit=(EditText)layout.findViewById(R.id.dialog_edit);
                String text=edit.getText().toString();

                name=text;

                dialog.dismiss();
         }
     });   

     dialog.show();
6 Answers

Hope it will help you.

private void inputFromDialog() {

    final Dialog dialog = new Dialog(SplashActivity.this);
    dialog.setContentView(R.layout.view_dialog);
    dialog.setTitle("Title");
    dialog.setCancelable(false);
    dialog.show();

    Button button = (Button) dialog.findViewById(R.id.continue_BTN);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            EditText inputET=(EditText)dialog.findViewById(R.id.input_ET);


            if (inputET.getText().toString().equals("")){

                inputET.setError("This field is required");

            }else {

                mssid = inputET.getText().toString();
                dialog.cancel();
                Toast.makeText(SplashActivity.this, mssid, Toast.LENGTH_SHORT).show();
            }

        }
    });



}

Like @krishna but in kotlin

  val builder = AlertDialog.Builder(context)
    val inflater = requireActivity().layoutInflater

    val dialogView = inflater.inflate(R.layout.fav_dialog, null)
    val name = dialogView.findViewById<EditText>(R.id.username)

    builder.setView(dialogView)
        .setPositiveButton("Add") { dialog, id ->
            val foxName = name.text.toString()
            Log.v("miapp", "Myfox $foxName")
        }
        .setNegativeButton("Cancel") { dialog, id ->
            dialog.cancel()
        }

    builder.setTitle("Add to favs")
    builder.setCancelable(false).create().show()
Related