在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 **/
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:id="@+id/usernamet"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:text="账号"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium" />
android:id="@+id/username"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:scrollHorizontally="true"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"/>
android:id="@+id/passwordt"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:text="密码"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium" />
android:id="@+id/password"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:scrollHorizontally="true"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:password="true"
android:textAppearance="?android:attr/textAppearanceMedium" />