在android的应用中越来越多的包含了网络互动功能,这就带来了注册,登陆账号功能。本文完整的介绍对话框的方式实现用户登陆功能。
登陆效果: 应用程序判断当前用户还未登陆,弹出登陆对话框,用户输入账号和密码信息后,传到服务器验证,验证成功后,现实Toast 成功信息,并转到其他界面。
注册效果:用户如没有账号,则点击登陆对话框的 "没有账号,快速注册账号", 弹出注册界面,用户输入注册信息,点击注册按钮,注册成功后,弹出toast信息"注册成功",完成注册后,转到其他功能界面。
整个功能大体上分两块:登陆对话框:输入登陆信息,实现登陆功能,转到注册界面。注册对话框:输入注册信息,实现注册功能。
对话框界面布局xml文件:
后台业务逻辑:
private void CreateLoginalert()
{
alertDialog.Builder ad =new alertDialog.Builder(this);
ad.setTitle("账号登陆");
ad.setView(ViewUtility.GetView(this,R.layout.sub_logindialog));
adi= ad.create();
adi.setButton("登陆", new onClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
EditText password= (EditText)adi.findViewById(R.id.txt_password);
EditText account =(EditText)adi.findViewById(R.id.txt_username);
PassWord=password.getText().toString();
Account=account.getText().toString();
//生成登陆对话框
m_Dialog=ProgressDialog.show(Main.this, "请等待...", "正在为你登陆...",true);
mRedrawHandler.sleep(100);
}
});
adi.setButton2("试 玩", new onClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}
});
adi.show();
//设置注册点击事件
TextView register=(TextView)adi.findViewById(R.id.txt_toregister);
register.setonClickListener(new TextView.onClickListener()
{
public void onClick(View v){
//创建注册对话框
CreateRegisteralert();
adi.dismiss();
}
});
}
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
try{
//调用网络接口,实现登陆指令
Boolean flags= UserDataServiceHelper.Login(Account, PassWord);
if(flags)
{
//保存登陆信息
UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
uw.SaveUserInfoInDB("xuwenbing", Account);
//提示登陆成功
Toast.makeText(Main.this, "登陆成功", Toast.LENGTH_SHORT).show();
//转到主题页面
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}else
{
//失败 显示错误信息
Toast.makeText(Main.this, "登陆失败", Toast.LENGTH_SHORT).show();
adi.show();
adi.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
m_Dialog.dismiss();
}
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
对话框界面布局xml文件:
后台业务逻辑:
private void CreateRegisteralert()
{
//registerdialog
alertDialog.Builder ad =new alertDialog.Builder(this);
ad.setTitle("注册账号");
ad.setView(ViewUtility.GetView(this,R.layout.sub_registerdialog));
registerdialog= ad.create();
registerdialog.setButton("注册", new onClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
EditText password= (EditText)registerdialog.findViewById(R.id.txt_password);
EditText account =(EditText)registerdialog.findViewById(R.id.txt_username);
EditText nicename =(EditText)registerdialog.findViewById(R.id.txt_nicename);
PassWord=password.getText().toString();
Account=account.getText().toString();
NiceName=nicename.getText().toString();
//生成注册对话框
m_Dialog=ProgressDialog.show(Main.this, "请等待...", "正在为你注册...",true);
mRegsiterHandler.sleep(100);
}
});
registerdialog.setButton2("试 玩", new onClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}
});
registerdialog.show();
}
private RegsiterHandler mRegsiterHandler = new RegsiterHandler();
class RegsiterHandler extends Handler {
@Override
public void handleMessage(Message msg) {
try{
//调用网络接口,实现注册指令
Boolean flags= UserDataServiceHelper.Register(Account, PassWord,NiceName);
if(flags)
{
//保存注册信息
UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
uw.SaveUserInfoInDB("xuwenbing", Account);
//提示注册成功
Toast.makeText(Main.this, "注册成功", Toast.LENGTH_SHORT).show();
//转到主题页面
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}else
{
//失败 显示错误信息
Toast.makeText(Main.this, "注册失败", Toast.LENGTH_SHORT).show();
registerdialog.show();
registerdialog.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
m_Dialog.dismiss();
}
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
两个网络接口功能:
//调用网络接口,实现登陆指令 Boolean flags= UserDataServiceHelper.Login(Account, PassWord); //调用网络接口,实现注册指令 Boolean flags= UserDataServiceHelper.Register(Account, PassWord,NiceName);



