登录框实例:
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(ctx);
builder.setTitle(Constants.tipTitle);
builder.setView(loginView);
builder.setPositiveButton("登录", null);
builder.setNegativeButton("取消", null);
final android.app.AlertDialog alert = builder.create();
alert.show();
Button theButton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
theButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
TextView untv = (TextView)loginView.findViewById(R.id.userName);
if(untv.getText().length()==0){
Toast.makeText(ctx, "请输入用户名", Constants.Toast.SHORT).show();
return;
}
TextView password = (TextView)loginView.findViewById(R.id.password);
if(password.getText().length()==0){
Toast.makeText(ctx, "请输入密码", Constants.Toast.SHORT).show();
return;
}
alert.dismiss();
}
});
简要分析:
原先由builder.setPositiveButton("登录", listener); builder.setNegativeButton("取消", listener); 实现,点击后dialog会自动消失。
但在验证信息时,需要验证dialog中的表单字段,若验证不通过,就应该提示用户,同时保留dialog供用户纠正。
优化后的实现则,设置为null,在dialog呈现后,获取其中的按钮,就像普通按钮一样进行事件的绑定。