1 public class LoginActivity extends Activity { 2 3 @Override 4 public void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 7 setContentView(R.layout.activity_login); 8 9 showWaiterAuthorizationDialog(); 10 } 11 12 // 显示对话框 13 public void showWaiterAuthorizationDialog() { 14 15 // LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化 16 LayoutInflater factory = LayoutInflater.from(LoginActivity.this); 17 // 把activity_login中的控件定义在View中 18 final View textEntryView = factory.inflate(R.layout.activity_login, 19 null); 20 21 // 将LoginActivity中的控件显示在对话框中 22 new AlertDialog.Builder(LoginActivity.this) 23 // 对话框的标题 24 .setTitle("登陆") 25 // 设定显示的View 26 .setView(textEntryView) 27 // 对话框中的“登陆”按钮的点击事件 28 .setPositiveButton("登陆", new DialogInterface.OnClickListener() { 29 public void onClick(DialogInterface dialog, int whichButton) { 30 31 // 获取用户输入的“用户名”,“密码” 32 // 注意:textEntryView.findViewById很重要,因为上面factory.inflate(R.layout.activity_login, 33 // null)将页面布局赋值给了textEntryView了 34 final EditText etUserName = (EditText) textEntryView 35 .findViewById(R.id.etuserName); 36 final EditText etPassword = (EditText) textEntryView 37 .findViewById(R.id.etPWD); 38 39 // 将页面输入框中获得的“用户名”,“密码”转为字符串 40 String userName = etUserName.getText().toString() 41 .trim(); 42 String password = etPassword.getText().toString() 43 .trim(); 44 45 // 现在为止已经获得了字符型的用户名和密码了,接下来就是根据自己的需求来编写代码了 46 // 这里做一个简单的测试,假定输入的用户名和密码都是1则进入其他操作页面(OperationActivity) 47 if (userName.equals("1") && password.equals("1")) { 48 // 跳转到OperationActivity 49 Intent intent = new Intent(); 50 intent.setClass(LoginActivity.this, 51 OperationActivity.class); 52 startActivity(intent); 53 // 关闭当前页面 54 LoginActivity.this.finish(); 55 56 } else { 57 Toast.makeText(LoginActivity.this, "密码或用户名错误", 58 Toast.LENGTH_SHORT).show(); 59 60 try { 61 // 注意此处是通过反射,修改源代码类中的字段mShowing为true,系统会认为对话框打开 62 // 从而调用dismiss() 63 Field field = dialog.getClass().getSuperclass() 64 .getDeclaredField("mShowing"); 65 field.setAccessible(true); 66 field.set(dialog, false); 67 dialog.dismiss(); 68 69 } catch (Exception e) { 70 71 } 72 } 73 } 74 }) 75 // 对话框的“退出”单击事件 76 .setNegativeButton("退出", new DialogInterface.OnClickListener() { 77 public void onClick(DialogInterface dialog, int whichButton) { 78 LoginActivity.this.finish(); 79 } 80 }) 81 // 设置dialog是否为模态,false表示模态,true表示非模态 82 .setCancelable(false) 83 // 对话框的创建、显示 84 .create().show(); 85 } 86 }
来源 : http://blog.csdn.net/aboy123/article/details/8548930