android自定义登陆Dialog
Preview
Question
我们需要自定义一个登陆界面,当我们密码输入成功的时候进入下一个页面,密码不匹配的时候将输入的内容清空。
Solution
001 package com.study;
002
003 import java.lang.reflect.Field;
004
005 import android.app.Activity;
006 import android.app.AlertDialog;
007 import android.app.ProgressDialog;
008 import android.content.DialogInterface;
009 import android.content.Intent;
010 import android.database.Cursor;
011 import android.database.sqlite.SQLiteDatabase;
012 import android.os.Bundle;
013 import android.os.Handler;
014 import android.view.LayoutInflater;
015 import android.view.View;
016 import android.widget.EditText;
017
018 public class Login extends Activity {
019 /** Called when the activity is first created. */
020
021 private DBHelpter dbHelpter;
022 private SQLiteDatabase db;
023 private String name;
024 private String password;
025 private EditText editTextName;
026 private EditText editTextPassword;
027 private Cursor cursor;
028 private ProgressDialog progressDialog;
029
030 @Override
031 public void onCreate(Bundle savedInstanceState) {
032 super.onCreate(savedInstanceState);
033 setContentView(R.layout.main);
034 Handler handler = new Handler();
035 handler.post(runableCreateDialog);
036 }
037
038 Runnable runableCreateDialog = new Runnable() {
039
040 @Override
041 public void run() {
042 // TODO Auto-generated method stub
043 // 因为是动态加载xml布局文件,要得到xml里面的控件必须这样做
044 LayoutInflater factory = LayoutInflater.from(Login.this);
045 final View view = factory.inflate(R.layout.login, null);
046
047 // 生成一个自定义的AlertDialog
048 new AlertDialog.Builder(Login.this).setTitle(
049 getResources().getString(R.string.dialogTitle)).setView(
050 view).setNegativeButton(
051 getResources().getString(R.string.register),
052 new DialogInterface.OnClickListener() {
053
054 @Override
055 public void onClick(DialogInterface dialog, int which) {
056 // TODO Auto-generated method stub
057 try {
058 Field field = dialog.getClass().getSuperclass()
059 .getDeclaredField("mShowing");
060 field.setAccessible(true);
061 field.set(dialog, true);
062 dialog.dismiss();
063
064 } catch (Exception e) {
065
066 }
067 Intent intent = new Intent(Login.this,
068 Register.class);
069 startActivity(intent);
070
071 }
072 }).setPositiveButton(
073 getResources().getString(R.string.confirm),
074 new DialogInterface.OnClickListener() {
075
076 @Override
077 public void onClick(DialogInterface dialog, int which) {
078 // TODO Auto-generated method stub
079 try {
080 Field field = dialog.getClass().getSuperclass()
081 .getDeclaredField("mShowing");
082 field.setAccessible(true);
083
084 dbHelpter = new DBHelpter(Login.this);
085 db = dbHelpter.getReadableDatabase();
086 editTextName = (EditText) view
087 .findViewById(R.id.editTextUserName);
088 editTextPassword = (EditText) view
089 .findViewById(R.id.editTextPassword);
090 name = editTextName.getText().toString();
091 password = editTextPassword.getText()
092 .toString();
093
094 try {
095 cursor = db.rawQuery(
096 "select * from tbluser where "
097 + UserColumns.userName
098 + " = ? and "
099 + UserColumns.userPassword
100 + " = ?", new String[] {
101 name, password });
102 if (cursor.getCount() > 0) {
103 progressDialog = ProgressDialog
104 .show(
105 Login.this,
106 getResources()
107 .getString(
108 R.string.progressTitle),
109 getResources()
110 .getString(
111 R.string.loginNow),
112 true);
113
114 new Thread() {
115 @Override
116 public void run() {
117 // TODO Auto-generated method
118 // stub
119 try {
120 sleep(3000);
121 } catch (Exception ex) {
122 ex.printStackTrace();
123 } finally {
124 if (progressDialog != null)
125 progressDialog
126 .dismiss();
127 }
128 }
129
130 }.start();
131 System.out.println("登陆成功");
132 field.set(dialog, true);
133 dialog.dismiss();
134 Intent intent = new Intent(Login.this,
135 Information.class);
136 startActivity(intent);
137 } else {
138 editTextName.setText("");
139 editTextPassword.setText("");
140 field.set(dialog, false);
141 dialog.dismiss();
142 System.out.println("登陆失败");
143 }
144 } finally {
145 try {
146 if (cursor != null) {
147 if (!cursor.isClosed())
148 cursor.close();
149 }
150 } finally {
151 try {
152 if (db != null) {
153 db.close();
154 }
155 } finally {
156 if (dbHelpter != null) {
157 dbHelpter.close();
158 }
159 }
160 }
161 }
162
163 } catch (Exception e) {
164
165 }
166 }
167 }).show();
168 }
169 };
170
171 @Override
172 protected void onStop() {
173 // TODO Auto-generated method stub
174 this.finish();
175 super.onStop();
176 }
177 }
002
003 import java.lang.reflect.Field;
004
005 import android.app.Activity;
006 import android.app.AlertDialog;
007 import android.app.ProgressDialog;
008 import android.content.DialogInterface;
009 import android.content.Intent;
010 import android.database.Cursor;
011 import android.database.sqlite.SQLiteDatabase;
012 import android.os.Bundle;
013 import android.os.Handler;
014 import android.view.LayoutInflater;
015 import android.view.View;
016 import android.widget.EditText;
017
018 public class Login extends Activity {
019 /** Called when the activity is first created. */
020
021 private DBHelpter dbHelpter;
022 private SQLiteDatabase db;
023 private String name;
024 private String password;
025 private EditText editTextName;
026 private EditText editTextPassword;
027 private Cursor cursor;
028 private ProgressDialog progressDialog;
029
030 @Override
031 public void onCreate(Bundle savedInstanceState) {
032 super.onCreate(savedInstanceState);
033 setContentView(R.layout.main);
034 Handler handler = new Handler();
035 handler.post(runableCreateDialog);
036 }
037
038 Runnable runableCreateDialog = new Runnable() {
039
040 @Override
041 public void run() {
042 // TODO Auto-generated method stub
043 // 因为是动态加载xml布局文件,要得到xml里面的控件必须这样做
044 LayoutInflater factory = LayoutInflater.from(Login.this);
045 final View view = factory.inflate(R.layout.login, null);
046
047 // 生成一个自定义的AlertDialog
048 new AlertDialog.Builder(Login.this).setTitle(
049 getResources().getString(R.string.dialogTitle)).setView(
050 view).setNegativeButton(
051 getResources().getString(R.string.register),
052 new DialogInterface.OnClickListener() {
053
054 @Override
055 public void onClick(DialogInterface dialog, int which) {
056 // TODO Auto-generated method stub
057 try {
058 Field field = dialog.getClass().getSuperclass()
059 .getDeclaredField("mShowing");
060 field.setAccessible(true);
061 field.set(dialog, true);
062 dialog.dismiss();
063
064 } catch (Exception e) {
065
066 }
067 Intent intent = new Intent(Login.this,
068 Register.class);
069 startActivity(intent);
070
071 }
072 }).setPositiveButton(
073 getResources().getString(R.string.confirm),
074 new DialogInterface.OnClickListener() {
075
076 @Override
077 public void onClick(DialogInterface dialog, int which) {
078 // TODO Auto-generated method stub
079 try {
080 Field field = dialog.getClass().getSuperclass()
081 .getDeclaredField("mShowing");
082 field.setAccessible(true);
083
084 dbHelpter = new DBHelpter(Login.this);
085 db = dbHelpter.getReadableDatabase();
086 editTextName = (EditText) view
087 .findViewById(R.id.editTextUserName);
088 editTextPassword = (EditText) view
089 .findViewById(R.id.editTextPassword);
090 name = editTextName.getText().toString();
091 password = editTextPassword.getText()
092 .toString();
093
094 try {
095 cursor = db.rawQuery(
096 "select * from tbluser where "
097 + UserColumns.userName
098 + " = ? and "
099 + UserColumns.userPassword
100 + " = ?", new String[] {
101 name, password });
102 if (cursor.getCount() > 0) {
103 progressDialog = ProgressDialog
104 .show(
105 Login.this,
106 getResources()
107 .getString(
108 R.string.progressTitle),
109 getResources()
110 .getString(
111 R.string.loginNow),
112 true);
113
114 new Thread() {
115 @Override
116 public void run() {
117 // TODO Auto-generated method
118 // stub
119 try {
120 sleep(3000);
121 } catch (Exception ex) {
122 ex.printStackTrace();
123 } finally {
124 if (progressDialog != null)
125 progressDialog
126 .dismiss();
127 }
128 }
129
130 }.start();
131 System.out.println("登陆成功");
132 field.set(dialog, true);
133 dialog.dismiss();
134 Intent intent = new Intent(Login.this,
135 Information.class);
136 startActivity(intent);
137 } else {
138 editTextName.setText("");
139 editTextPassword.setText("");
140 field.set(dialog, false);
141 dialog.dismiss();
142 System.out.println("登陆失败");
143 }
144 } finally {
145 try {
146 if (cursor != null) {
147 if (!cursor.isClosed())
148 cursor.close();
149 }
150 } finally {
151 try {
152 if (db != null) {
153 db.close();
154 }
155 } finally {
156 if (dbHelpter != null) {
157 dbHelpter.close();
158 }
159 }
160 }
161 }
162
163 } catch (Exception e) {
164
165 }
166 }
167 }).show();
168 }
169 };
170
171 @Override
172 protected void onStop() {
173 // TODO Auto-generated method stub
174 this.finish();
175 super.onStop();
176 }
177 }