Android:使用LitePal实现注册、登录功能

利用litepal操作数据库的便利不必多说,本篇文章简要总结我在使用litepal实现APP注册登录功能的过程。

Litepal实现注册登录,包含三部分文件

1)数据库文件,包含表格文件、表格管理文件

2)Activity文件,注册、登录等

3)xml布局文件


1. 数据库文件:

1.1 User表格

这里定义了基本用户信息:用户名、密码、手机等。

public class User extends DataSupport {

private String userId;

private String userName;

private String userPwd;

private String userPhone;

private String userEmail;


public String getUserName() {

return userName;    }

public void setUserName(String userName) {

this.userName = userName;  }


public String getUserPhone() {

return userPhone;  }

public void setUserPhone(String userPhone) {

this.userPhone = userPhone;}


public String getUserPwd() {

return userPwd;    }

public void setUserPwd(String userPwd) {

this.userPwd = userPwd; }

/*public String getUserEmail() {

        return userEmail; }

    public void setUserEmail(String userEmail) {

        this.userEmail = userEmail;

    }*/

}

在litepal.xml文件中添加到映射模型列表:

1.2 数据表格管理文件

在这里定义保存、特定查询等函数。

public class UserManager {

//插入用户数据(注册用)

    public boolean insertUser(String name,String password,String phone){

       User user=new User();

        user.setUserName(name);

        user.setUserPwd(password);

        user.setUserPhone(phone);

        //user.setUserEmail(email);

        //创建数据库

        LitePal.getDatabase();

        return  user.save();

    }

//查找用户名,查看用户是否存在(注册、找回密码用)

    public boolean findUserByName(String name){

        List users = DataSupport.findAll(User.class);

        for(User person: users){

            if(name.trim().equals(person.getUserName())){

                return true;

          }

      }

        return false;

    }

//查找手机号是否已注册(找回密码用)

    public boolean findByPhone(String phone){

        List users = DataSupport.findAll(User.class);

        for(User person: users){

            if(phone.trim().equals(person.getUserPhone())){

                return true;

            }

        }

    return false;

    }

//查找用户名、密码是否正确匹配(登录、重置密码用)

    public boolean findNameAndPwd(String name,String password){

        List users = DataSupport.findAll(User.class);

for(User person: users){

if((name.trim().equals(person.getUserName()))&&(password.trim().equals(person.getUserPwd()))){

return true;

            }

        }

return false;

    }

}


2. Activity文件

!!一定要在AndroidManifest.xml文件中注册。

<activity android:name=".HomeActivity"></activity>

<activity android:name=".RegisterActivity"></activity>

登录、注册Activity文件其实都只包含三部分:1)变量定义实例化、2)按钮点击事件监测、3)信息判断(是否为空?是否合理?)

2.1  MainActivity文件(登录)

首先,是基本的变量定义与实例化:

public class MainActivity extends AppCompatActivity {

private Intent mHome, mRegister;

private Button btn_login, btn_register;

private EditText edt_name, edt_password;

 UserManager userManager = new UserManager();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 setContentView(R.layout.activity_main);

//隐藏标题栏

  ActionBar actionBar = getSupportActionBar();

if (actionBar != null) {

            actionBar.hide();

        }

        initView();

    }

//获取实例对象

    public void initView() {

    edt_name = (EditText) findViewById(R.id.account_login);

    edt_password = (EditText) findViewById(R.id.pass_login);

    btn_register = (Button) findViewById(R.id.register_now);

    btn_login = (Button) findViewById(R.id.loginButton);

    btn_login.setOnClickListener(new click());

    btn_register.setOnClickListener(new click());

    }

对按钮点击进行监听:

//按钮点击事件监听

private class click implements View.OnClickListener{

@Override

public void onClick(View v){

switch (v.getId()){

case R.id.register_now:

mRegister=new Intent(MainActivity.this,RegisterActivity.class);//跳转至注册界面

 startActivity(mRegister);

break;

case R.id.loginButton:

                login_judge();

                break;

default:

                break;

        }

    }

}

登录信息判断:

//对输入的用户名、密码进行验证,判断界面跳转方向

    private void login_judge() {

//获取用户名、密码

        boolean flag;

        String name =edt_name.getText().toString().trim();

        String pwd =edt_password.getText().toString().trim();

        flag=userManager.findNameAndPwd(name, pwd);

if(flag){

            Toast.makeText(this, "登陆成功", Toast.LENGTH_LONG).show();

            mHome = new Intent(MainActivity.this, HomeActivity.class);  //跳转到首页

            startActivity(mHome);

            finish();

        }

else{

            Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();

return;

        }

    }

}

2.2  RegisterActivity(注册)

变量定义与实例化:

public class RegisterActivity extends AppCompatActivity {

private EditText mAccount;          //账户

    private EditText mPwd;          //密码

    private EditText mPwdCheck;     //确认密码

    private EditText mPhone;        //手机

    private Button mSureButton;

    UserManager userManager = new UserManager();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 setContentView(R.layout.activity_register);

//隐藏标题栏

  ActionBar actionBar = getSupportActionBar();

if(actionBar != null){

            actionBar.hide();

        }

        initView();

    }

//获取实例对象

    public void initView() {

    mAccount = (EditText)findViewById(R.id.account_register);

    mPwd = (EditText)findViewById(R.id.pass_register);

    mPwdCheck = (EditText)findViewById(R.id.rePass_register);

    mSureButton = (Button)findViewById(R.id.registerButton);

    mPhone=(EditText)findViewById(R.id.ph_register);

    mSureButton.setOnClickListener(new Click());

    }

注册点击事件检测:

private class Click implements View.OnClickListener {

@Override

public void onClick(View v) {

switch(v.getId()){

case R.id.registerButton:

                register_check();

                break;

default:

                break;

        }

    }

}

注册信息检测:

//对注册信息进行验证,用户名是否已注册,两次密码输入是否一致private void register_check() {

if(isUserNameAndPwdValid()){

boolean flag;

String name =mAccount.getText().toString().trim();

String password =mPwd.getText().toString().trim();

String rePassword =mPwdCheck.getText().toString().trim();

String phone=mPhone.getText().toString().trim();

flag =userManager.findUserByName(name);

if(flag){

            Toast.makeText(this, "用户名已经存在",Toast.LENGTH_SHORT).show();

return ;

        }

if(!password.equals(rePassword)){

            Toast.makeText(this, "输入的密码不同",Toast.LENGTH_SHORT).show();

        }

else {

            flag=userManager.insertUser(name,password,phone);

if(!flag){

                Toast.makeText(this,"注册失败(信息保存失败)",Toast.LENGTH_LONG).show();

return ;

            }

            Toast.makeText(this,"注册成功",Toast.LENGTH_LONG).show();

            Intent intent_Register_to_Login =new Intent(RegisterActivity.this,MainActivity.class) ; //切换RegisterActivityLogin Activity

            startActivity(intent_Register_to_Login);

            finish();

        }

    }

}

判断信息是否为空

//判断输入的昵称,密码,确认密码是否为空

    public boolean isUserNameAndPwdValid() {

if (mPhone.getText().toString().trim().equals("")) {

            Toast.makeText(this, "手机号不能为空", Toast.LENGTH_SHORT).show();

return false;

        }

else if (mAccount.getText().toString().trim().equals("")) {

            Toast.makeText(this,"用户名不能为空",Toast.LENGTH_SHORT).show();

return false;

        }

else if (mPwd.getText().toString().trim().equals("")) {

            Toast.makeText(this, "密码不能为空",Toast.LENGTH_SHORT).show();

return false;

        }

else if(mPwdCheck.getText().toString().trim().equals("")) {

            Toast.makeText(this, "再次输入密码不能为空", Toast.LENGTH_SHORT).show();

return false;

       }

return true;

    }

}

3. XML布局文件

3.1  activity_main.xml

这里我用了自定义的ImageView文件。

<?xmlversion="1.0"encoding="utf-8"?>

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:background="@drawable/background"

tools:context="com.example.administrator.test.MainActivity">

<TextView

android:paddingTop="20dp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="登录"

android:textColor="#000000"

android:textSize="24sp"

android:id="@+id/textView_login"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"/>

<com.example.administrator.test.CircleImageView

android:layout_width="100dp"

android:layout_height="100dp"

android:adjustViewBounds="true"

android:src="@drawable/app"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="40dp"

android:id="@+id/imgLogin"/>

 <EditText

android:drawableLeft="@android:drawable/ic_menu_myplaces"

android:layout_width="260dp"

android:layout_height="40dp"

android:digits="0123456789"

android:hint="请输入用户名"

android:maxLines="1"

android:id="@+id/account_login"

android:layout_centerHorizontal="true"

android:layout_marginTop="150dp"/>

<EditText

android:drawableLeft="@android:drawable/ic_lock_idle_lock"

android:layout_width="260dp"

android:layout_height="40dp"

android:inputType="textPassword"

android:hint="密码"

android:maxLines="1"

android:id="@+id/pass_login"

android:layout_below="@+id/account_login"

android:layout_alignLeft="@+id/account_login"

android:layout_alignStart="@+id/account_login"

android:layout_marginTop="30dp"/>

<Button

android:layout_gravity="center"

android:layout_width="250dp"

android:layout_height="60dp"

android:textColor="#000"

android:textSize="20dp"

android:text="登录"

android:id="@+id/loginButton"

android:layout_below="@+id/pass_login"

android:layout_centerHorizontal="true"

android:layout_marginTop="39dp"/>

<Button

android:text="立即注册"

android:textColor="#04ba1c"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@null"

android:id="@+id/register_now"

android:layout_marginBottom="59dp"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

android:layout_marginRight="27dp"

android:layout_marginEnd="27dp"/>

</RelativeLayout>

3.1  activity_register.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:background="@drawable/background"

    tools:context="com.example.administrator.test.MainActivity">

    <TextView

        android:paddingTop="20dp"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="注册"

        android:textColor="#000000"

        android:textSize="24sp"

        android:id="@+id/textView_register"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true" />

<!-- 注册-->

    <Button

        android:layout_gravity="center"

        android:layout_width="250dp"

        android:layout_height="60dp"

        android:textColor="#000"

        android:textSize="20dp"

        android:text="注册"

        android:id="@+id/registerButton"

        android:layout_alignParentBottom="true"

        android:layout_centerHorizontal="true"

        android:layout_marginBottom="80dp" />

    <EditText

        android:drawableLeft="@android:drawable/ic_menu_myplaces"

        android:layout_width="260dp"

        android:layout_height="40dp"

        android:hint="请输入手机号"

        android:maxLines="1"

        android:id="@+id/ph_register"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="60dp" />

    <EditText

        android:drawableLeft="@android:drawable/ic_menu_myplaces"

        android:layout_width="260dp"

        android:layout_height="40dp"

        android:digits="0123456789"

        android:hint="请输入用户名"

        android:maxLines="1"

        android:id="@+id/account_register"

        android:layout_below="@+id/ph_register"

        android:layout_alignLeft="@+id/ph_register"

        android:layout_alignStart="@+id/ph_register"

        android:layout_marginTop="30dp" />

    <EditText

        android:drawableLeft="@android:drawable/ic_lock_idle_lock"

        android:layout_width="260dp"

        android:layout_height="40dp"

        android:inputType="textPassword"

        android:hint="密码"

        android:maxLines="1"

        android:id="@+id/pass_register"

        android:layout_below="@+id/account_register"

        android:layout_alignLeft="@+id/account_register"

        android:layout_alignStart="@+id/account_register"

        android:layout_marginTop="30dp"/>

    <EditText

        android:drawableLeft="@android:drawable/ic_lock_idle_lock"

        android:layout_width="260dp"

        android:layout_height="40dp"

        android:inputType="textPassword"

        android:hint="确认密码"

        android:maxLines="1"

        android:id="@+id/rePass_register"

        android:layout_below="@+id/pass_register"

        android:layout_alignLeft="@+id/pass_register"

        android:layout_alignStart="@+id/pass_register"

        android:layout_marginTop="30dp" />

</RelativeLayout>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容