Android 登陆对话框

 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

原文地址:https://www.cnblogs.com/wolfe/p/4348701.html