Android - 自定义对话框 - 无法从EditText获取文本

Thu*_*rSS 28 android dialog android-edittext

我的自定义对话框有问题.
我的对话框包含的TextView,EditText和一个"确定"按钮.单击"确定"后,它应从EditText字段获取文本并将其分配给活动中定义的字符串变量"name".
一切似乎都有效,没有错误等,但"text"总是一个空字符串.
我读了一些关于这些问题的话题,但是我不确定我应该在这里做些什么调整.
我对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();
Run Code Online (Sandbox Code Playgroud)

kri*_*hna 50

如果要将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(); 
Run Code Online (Sandbox Code Playgroud)

  • 很棒的代码!谢谢!浪费了一个小时试图弄清楚如何使用对话框片段,但没有教程足够清晰来满足我想要的! (2认同)

mat*_*joe 29

您正在为不需要的布局充气.我修改了你的代码,因为你看到我删除了你膨胀的行,并改变了你试图找到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();
Run Code Online (Sandbox Code Playgroud)