获取由 AlertDialog 生成的对话框中EditText的文本内容

    在Android开发中,AlertDialog常用于处理用户的登录等。那么如何获取由 AlertDialog 生成的对话框中EditText的文本内容呢?

    其实Alertdialog弹出的Activity 可以认为是默认的Activity的子Activity。不能直接使用findViewById()来获取。强行使用会提示一个空指针的错误,我们只需要加上  Alertdialog弹出的Activity.findViewById()就可以获取我们想要的EditText对象了。

关键代码如下:

 /**  Activity01.java  **/
 
 public String strUsername = "";
 
 LayoutInflater factory = LayoutInflater.from(Activity01.this);
 //得到自定义对话框
 final View DialogView = factory.inflate(R.layout.dialog, null);
 //创建对话框
 AlertDialog dlg = new AlertDialog.Builder(Activity01.this)
     .setTitle("登录框")
     .setView(DialogView)//设置自定义对话框的样式
     .setPositiveButton("确定", //设置"确定"按钮
         new DialogInterface.OnClickListener() //设置事件监听
         {
             public void onClick(DialogInterface dialog, int whichButton) {
                //输入后点击“确定”,开始获取我们要的内容 DialogView就是AlertDialog弹出的Activity
                 EditText edtUserName = (EditText)DialogView.findViewById(R.id.username);
                 strUserName = edtUserName.getText().toString();
             }
         })
     .setNegativeButton("取消", //设置“取消”按钮
         new DialogInterface.OnClickListener() 
         {
             public void onClick(DialogInterface dialog, int whichButton) {
             //点击"取消"按钮之后退出程序
                 Activity01.this.finish();
             }
         })
     .create();//创建弹出框
 dlg.show();//显示
 
 
 
 /**  dialog.xml  **/
 
 
 


    
            
    

    
            
    


转载于:https://my.oschina.net/topcc/blog/380273

你可能感兴趣的:(获取由 AlertDialog 生成的对话框中EditText的文本内容)