Android - Пользовательский диалог - Не удается получить текст из EditText - PullRequest
27 голосов
/ 08 июля 2011

У меня проблема с пользовательским диалогом.
Мой диалог состоит из TextView, EditText и кнопки «ОК». После нажатия «Ok», он должен получить текст из поля EditText и назначить его строковой переменной «name», определенной в Activity.
Кажется, все работает, никаких ошибок и т. Д., Но «текст» всегда пустая строка.
Я читал некоторые темы о таких проблемах, однако я не совсем уверен, какие корректировки я должен сделать здесь.
Я довольно новичок в программировании на Android, поэтому я был бы благодарен, если бы кто-нибудь смог объяснить мне эту проблему. Заранее спасибо.

     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();

Ответы [ 5 ]

50 голосов
/ 30 декабря 2012

Если вы хотите накачать файл XML в диалоговое окно для создания пользовательской версии, вы можете использовать следующий код, который получает два ввода от пользователя

LayoutInflater linf = LayoutInflater.from(this);            
final View inflator = linf.inflate(R.layout.twoinputs, null);
AlertDialog.Builder alert = new AlertDialog.Builder(this); 

alert.setTitle("Tilte"); 
alert.setMessage("Message"); 
alert.setView(inflator); 

final EditText et1 = (EditText) inflator.findViewById(R.id.editText1);
final EditText et2 = (EditText) inflator.findViewById(R.id.editText2);

alert.setPositiveButton("ok", new DialogInterface.OnClickListener() { 
   public void onClick(DialogInterface dialog, int whichButton) 
   { 
          String s1=et1.getText().toString();
          String s2=et2.getText().toString();
          //do operations using s1 and s2 here...
   } 
}); 

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
   public void onClick(DialogInterface dialog, int whichButton) { 
            dialog.cancel(); 
   } 
}); 

alert.show(); 
29 голосов
/ 08 июля 2011

Вы надуваете макет там, где он не нужен. Я исправил ваш код, как вы видите, я удалил вашу строку, где он раздувается, и изменил строку, где вы пытаетесь найти представление EditText.

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

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

            EditText edit=(EditText)dialog.findViewById(R.id.dialog_edit);
            String text=edit.getText().toString();

            dialog.dismiss();
            name=text;

     }
 });   


dialog.show();
2 голосов
/ 01 мая 2017

Альтернатива мацзё и Кришне (обе работы):

builder.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
    //@Override
    public void onClick(DialogInterface dialog, int id) {
      // sign in the user ...

      Dialog dialogObj =Dialog.class.cast(dialog);
      EditText etUsr=(EditText) dialogObj.findViewById(R.id.username_id_value);
      userStr = etUsr.getText().toString();      
    }
  }
  );

Kf

0 голосов
/ 26 июля 2018

Надеюсь, это поможет вам.

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();
            }

        }
    });



}
0 голосов
/ 18 сентября 2013
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();

http://developer.android.com/training/basics/firstapp/starting-activity.html

...