Android – Пользовательский диалог – Не удается получить текст из EditText

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

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

Solutions Collecting From Web of "Android – Пользовательский диалог – Не удается получить текст из EditText"

Вы раздуваете макет, где он не нужен. Я исправил ваш код, как вы видите, я удалил вашу строку, где он раздул и изменил строку, где вы пытаетесь найти представление 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(); 

Если вы хотите раздуть 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(); 

Альтернатива мацджой и кришна (обе работы):

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

Кф

 EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); 

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