1. 程式人生 > >Android使用者登入註冊介面開發及使用者資訊管理案例程式碼詳解

Android使用者登入註冊介面開發及使用者資訊管理案例程式碼詳解

[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. package com.example.foolishfan.user_v10;  
  2. import android.content.ContentValues;  
  3. import android.content.Context;  
  4. import android.database.Cursor;  
  5. import android.database.SQLException;  
  6. import android.database.sqlite.SQLiteDatabase;  
  7. import android.database.sqlite.SQLiteOpenHelper;  
  8. import android.util.Log;  
  9. public class UserDataManager {             //使用者資料管理類  
  10.     //一些巨集定義和宣告  
  11.     private static final String TAG = "UserDataManager";  
  12.     private static final String DB_NAME = "user_data";  
  13.     private static final String TABLE_NAME = "users";  
  14.     public static final String ID = "_id"
    ;  
  15.     public static final String USER_NAME = "user_name";  
  16.     public static final String USER_PWD = "user_pwd";  
  17. //    public static final String SILENT = "silent";  
  18. //    public static final String VIBRATE = "vibrate";  
  19.     private static final int DB_VERSION = 2;  
  20.     private Context mContext = null
    ;  
  21.     //建立使用者book表  
  22.     private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME + " ("  
  23.             + ID + " integer primary key," + USER_NAME + " varchar,"  
  24.             + USER_PWD + " varchar" + ");";  
  25.     private SQLiteDatabase mSQLiteDatabase = null;  
  26.     private DataBaseManagementHelper mDatabaseHelper = null;  
  27.     //DataBaseManagementHelper繼承自SQLiteOpenHelper  
  28.     private static class DataBaseManagementHelper extends SQLiteOpenHelper {  
  29.         DataBaseManagementHelper(Context context) {  
  30.             super(context, DB_NAME, null, DB_VERSION);  
  31.         }  
  32.         @Override  
  33.         public void onCreate(SQLiteDatabase db) {  
  34.             Log.i(TAG,"db.getVersion()="+db.getVersion());  
  35.             db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");  
  36.             db.execSQL(DB_CREATE);  
  37.             Log.i(TAG, "db.execSQL(DB_CREATE)");  
  38.             Log.e(TAG, DB_CREATE);  
  39.         }  
  40.         @Override  
  41.         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  42.             Log.i(TAG, "DataBaseManagementHelper onUpgrade");  
  43.             onCreate(db);  
  44.         }  
  45.     }  
  46.     public UserDataManager(Context context) {  
  47.         mContext = context;  
  48.         Log.i(TAG, "UserDataManager construction!");  
  49.     }  
  50.     //開啟資料庫  
  51.     public void openDataBase() throws SQLException {  
  52.         mDatabaseHelper = new DataBaseManagementHelper(mContext);  
  53.         mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();  
  54.     }  
  55.     //關閉資料庫  
  56.     public void closeDataBase() throws SQLException {  
  57.         mDatabaseHelper.close();  
  58.     }  
  59.     //新增新使用者,即註冊  
  60.     public long insertUserData(UserData userData) {  
  61.         String userName=userData.getUserName();  
  62.         String userPwd=userData.getUserPwd();  
  63.         ContentValues values = new ContentValues();  
  64.         values.put(USER_NAME, userName);  
  65.         values.put(USER_PWD, userPwd);  
  66.         return mSQLiteDatabase.insert(TABLE_NAME, ID, values);  
  67.     }  
  68.     //更新使用者資訊,如修改密碼  
  69.     public boolean updateUserData(UserData userData) {  
  70.         //int id = userData.getUserId();  
  71.         String userName = userData.getUserName();  
  72.         String userPwd = userData.getUserPwd();  
  73.         ContentValues values = new ContentValues();  
  74.         values.put(USER_NAME, userName);  
  75.         values.put(USER_PWD, userPwd);  
  76.         return mSQLiteDatabase.update(TABLE_NAME, values,nullnull) > 0;  
  77.         //return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;  
  78.     }  
  79.     //  
  80.     public Cursor fetchUserData(int id) throws SQLException {  
  81.         Cursor mCursor = mSQLiteDatabase.query(false, TABLE_NAME, null, ID  
  82.                 + "=" + id, nullnullnullnullnull);  
  83.         if (mCursor != null) {  
  84.             mCursor.moveToFirst();  
  85.         }  
  86.         return mCursor;  
  87.     }  
  88.     //  
  89.     public Cursor fetchAllUserDatas() {  
  90.         return mSQLiteDatabase.query(TABLE_NAME, nullnullnullnullnull,  
  91.                 null);  
  92.     }  
  93.     //根據id刪除使用者  
  94.     public boolean deleteUserData(int id) {  
  95.         return mSQLiteDatabase.delete(TABLE_NAME, ID + "=" + id, null) > 0;  
  96.     }  
  97.     //根據使用者名稱登出  
  98.     public boolean deleteUserDatabyname(String name) {  
  99.         return mSQLiteDatabase.delete(TABLE_NAME, USER_NAME + "=" + name, null) > 0;  
  100.     }  
  101.     //刪除所有使用者  
  102.     public boolean deleteAllUserDatas() {  
  103.         return mSQLiteDatabase.delete(TABLE_NAME, nullnull) > 0;  
  104.     }  
  105.     //  
  106.     public String getStringByColumnName(String columnName, int id) {  
  107.         Cursor mCursor = fetchUserData(id);  
  108.         int columnIndex = mCursor.getColumnIndex(columnName);  
  109.         String columnValue = mCursor.getString(columnIndex);  
  110.         mCursor.close();  
  111.         return columnValue;  
  112.     }  
  113.     //  
  114.     public boolean updateUserDataById(String columnName, int id,  
  115.                                       String columnValue) {  
  116.         ContentValues values = new ContentValues();  
  117.         values.put(columnName, columnValue);  
  118.         return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;  
  119.     }  
  120.     //根據使用者名稱找使用者,可以判斷註冊時使用者名稱是否已經存在  
  121.     public int findUserByName(String userName){  
  122.         Log.i(TAG,"findUserByName , userName="+userName);  
  123.         int result=0;  
  124.         Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName, nullnullnullnull);  
  125.         if(mCursor!=null){  
  126.             result=mCursor.getCount();  
  127.             mCursor.close();  
  128.             Log.i(TAG,"findUserByName , result="+result);  
  129.         }  
  130.         return result;  
  131.     }  
  132.     //根據使用者名稱和密碼找使用者,用於登入  
  133.     public int findUserByNameAndPwd(String userName,String pwd){  
  134.         Log.i(TAG,"findUserByNameAndPwd");  
  135.         int result=0;  
  136.         Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName+" and "+USER_PWD+"="+pwd,  
  137.                 nullnullnullnull);  
  138.         if(mCursor!=null){  
  139.             result=mCursor.getCount();  
  140.             mCursor.close();  
  141.             Log.i(TAG,"findUserByNameAndPwd , result="+result);  
  142.         }  
  143.         return result;  
  144.     }  
  145. }  
package com.example.foolishfan.user_v10;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class UserDataManager {             //使用者資料管理類
    //一些巨集定義和宣告
    private static final String TAG = "UserDataManager";
    private static final String DB_NAME = "user_data";
    private static final String TABLE_NAME = "users";
    public static final String ID = "_id";
    public static final String USER_NAME = "user_name";
    public static final String USER_PWD = "user_pwd";
//    public static final String SILENT = "silent";
//    public static final String VIBRATE = "vibrate";
    private static final int DB_VERSION = 2;
    private Context mContext = null;

    //建立使用者book表
    private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME + " ("
            + ID + " integer primary key," + USER_NAME + " varchar,"
            + USER_PWD + " varchar" + ");";

    private SQLiteDatabase mSQLiteDatabase = null;
    private DataBaseManagementHelper mDatabaseHelper = null;

    //DataBaseManagementHelper繼承自SQLiteOpenHelper
    private static class DataBaseManagementHelper extends SQLiteOpenHelper {

        DataBaseManagementHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.i(TAG,"db.getVersion()="+db.getVersion());
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");
            db.execSQL(DB_CREATE);
            Log.i(TAG, "db.execSQL(DB_CREATE)");
            Log.e(TAG, DB_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.i(TAG, "DataBaseManagementHelper onUpgrade");
            onCreate(db);
        }
    }

    public UserDataManager(Context context) {
        mContext = context;
        Log.i(TAG, "UserDataManager construction!");
    }
    //開啟資料庫
    public void openDataBase() throws SQLException {
        mDatabaseHelper = new DataBaseManagementHelper(mContext);
        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
    }
    //關閉資料庫
    public void closeDataBase() throws SQLException {
        mDatabaseHelper.close();
    }
    //新增新使用者,即註冊
    public long insertUserData(UserData userData) {
        String userName=userData.getUserName();
        String userPwd=userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.insert(TABLE_NAME, ID, values);
    }
    //更新使用者資訊,如修改密碼
    public boolean updateUserData(UserData userData) {
        //int id = userData.getUserId();
        String userName = userData.getUserName();
        String userPwd = userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.update(TABLE_NAME, values,null, null) > 0;
        //return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //
    public Cursor fetchUserData(int id) throws SQLException {
        Cursor mCursor = mSQLiteDatabase.query(false, TABLE_NAME, null, ID
                + "=" + id, null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }
    //
    public Cursor fetchAllUserDatas() {
        return mSQLiteDatabase.query(TABLE_NAME, null, null, null, null, null,
                null);
    }
    //根據id刪除使用者
    public boolean deleteUserData(int id) {
        return mSQLiteDatabase.delete(TABLE_NAME, ID + "=" + id, null) > 0;
    }
    //根據使用者名稱登出
    public boolean deleteUserDatabyname(String name) {
        return mSQLiteDatabase.delete(TABLE_NAME, USER_NAME + "=" + name, null) > 0;
    }
    //刪除所有使用者
    public boolean deleteAllUserDatas() {
        return mSQLiteDatabase.delete(TABLE_NAME, null, null) > 0;
    }

    //
    public String getStringByColumnName(String columnName, int id) {
        Cursor mCursor = fetchUserData(id);
        int columnIndex = mCursor.getColumnIndex(columnName);
        String columnValue = mCursor.getString(columnIndex);
        mCursor.close();
        return columnValue;
    }
    //
    public boolean updateUserDataById(String columnName, int id,
                                      String columnValue) {
        ContentValues values = new ContentValues();
        values.put(columnName, columnValue);
        return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //根據使用者名稱找使用者,可以判斷註冊時使用者名稱是否已經存在
    public int findUserByName(String userName){
        Log.i(TAG,"findUserByName , userName="+userName);
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName, null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByName , result="+result);
        }
        return result;
    }
    //根據使用者名稱和密碼找使用者,用於登入
    public int findUserByNameAndPwd(String userName,String pwd){
        Log.i(TAG,"findUserByNameAndPwd");
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName+" and "+USER_PWD+"="+pwd,
                null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByNameAndPwd , result="+result);
        }
        return result;
    }

}

3:具體操作的實現程式碼,即各個activity

        Login.java【使用者登入activity】
[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. package com.example.foolishfan.user_v10;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.content.SharedPreferences;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.CheckBox;  
  10. import android.widget.EditText;  
  11. import android.widget.ImageView;  
  12. import android.widget.TextView;  
  13. import android.widget.Toast;  
  14. public class Login extends Activity {                 //登入介面活動  
  15.     public int pwdresetFlag=0;  
  16.     private EditText mAccount;                        //使用者名稱編輯  
  17.     private EditText mPwd;                            //密碼編輯  
  18.     private Button mRegisterButton;                   //註冊按鈕  
  19.     private Button mLoginButton;                      //登入按鈕  
  20.     private Button mCancleButton;                     //登出按鈕  
  21.     private CheckBox mRememberCheck;  
  22.     private SharedPreferences login_sp;  
  23.     private String userNameValue,passwordValue;  
  24.     private View loginView;                           //登入  
  25.     private View loginSuccessView;  
  26.     private TextView loginSuccessShow;  
  27.     private TextView mChangepwdText;  
  28.     private UserDataManager mUserDataManager;         //使用者資料管理類  
  29.     @Override  
  30.     public void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.login);  
  33.         //通過id找到相應的控制元件  
  34.         mAccount = (EditText) findViewById(R.id.login_edit_account);  
  35.         mPwd = (EditText) findViewById(R.id.login_edit_pwd);  
  36.         mRegisterButton = (Button) findViewById(R.id.login_btn_register);  
  37.         mLoginButton = (Button) findViewById(R.id.login_btn_login);  
  38.         mCancleButton = (Button) findViewById(R.id.login_btn_cancle);  
  39.         loginView=findViewById(R.id.login_view);  
  40.         loginSuccessView=findViewById(R.id.login_success_view);  
  41.         loginSuccessShow=(TextView) findViewById(R.id.login_success_show);  
  42.         mChangepwdText = (TextView) findViewById(R.id.login_text_change_pwd);  
  43.         mRememberCheck = (CheckBox) findViewById(R.id.Login_Remember);  
  44.         login_sp = getSharedPreferences("userInfo"0);  
  45.         String name=login_sp.getString("USER_NAME""");  
  46.         String pwd =login_sp.getString("PASSWORD""");  
  47.         boolean choseRemember =login_sp.getBoolean("mRememberCheck"false);  
  48.         boolean choseAutoLogin =login_sp.getBoolean("mAutologinCheck"false);  
  49.         //如果上次選了記住密碼,那進入登入頁面也自動勾選記住密碼,並填上使用者名稱和密碼  
  50.         if(choseRemember){  
  51.             mAccount.setText(name);  
  52.             mPwd.setText(pwd);  
  53.             mRememberCheck.setChecked(true);  
  54.         }  
  55.         mRegisterButton.setOnClickListener(mListener);                      //採用OnClickListener方法設定不同按鈕按下之後的監聽事件  
  56.         mLoginButton.setOnClickListener(mListener);  
  57.         mCancleButton.setOnClickListener(mListener);  
  58.         mChangepwdText.setOnClickListener(mListener);  
  59.         ImageView image = (ImageView) findViewById(R.id.logo);             //使用ImageView顯示logo  
  60.         image.setImageResource(R.drawable.logo);  
  61.         if (mUserDataManager == null) {  
  62.             mUserDataManager = new UserDataManager(this);  
  63.             mUserDataManager.openDataBase();                              //建立本地資料庫  
  64.         }  
  65.     }  
  66.     OnClickListener mListener = new OnClickListener() {                  //不同按鈕按下的監聽事件選擇  
  67.         public void onClick(View v) {  
  68.             switch (v.getId()) {  
  69.                 case R.id.login_btn_register:                            //登入介面的註冊按鈕  
  70.                     Intent intent_Login_to_Register = new Intent(Login.this,Register.class) ;    //切換Login Activity至User Activity  
  71.                     startActivity(intent_Login_to_Register);  
  72.                     finish();  
  73.                     break;  
  74.                 case R.id.login_btn_login:                              //登入介面的登入按鈕  
  75.                     login();  
  76.                     break;  
  77.                 case R.id.login_btn_cancle:                             //登入介面的登出按鈕  
  78.                     cancel();  
  79.                     break;  
  80.                 case R.id.login_text_change_pwd:                             //登入介面的登出按鈕  
  81.                     Intent intent_Login_to_reset = new Intent(Login.this,Resetpwd.class) ;    //切換Login Activity至User Activity  
  82.                     startActivity(intent_Login_to_reset);  
  83.                     finish();  
  84.                     break;  
  85.             }  
  86.         }  
  87.     };  
  88.     public void login() {                                              //登入按鈕監聽事件  
  89.         if (isUserNameAndPwdValid()) {  
  90.             String userName = mAccount.getText().toString().trim();    //獲取當前輸入的使用者名稱和密碼資訊  
  91.             String userPwd = mPwd.getText().toString().trim();  
  92.             SharedPreferences.Editor editor =login_sp.edit();  
  93.             int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
  94.             if(result==1){                                             //返回1說明使用者名稱和密碼均正確  
  95.                 //儲存使用者名稱和密碼  
  96.                 editor.putString("USER_NAME", userName);  
  97.                 editor.putString("PASSWORD", userPwd);  
  98.                 //是否記住密碼  
  99.                 if(mRememberCheck.isChecked()){  
  100.                     editor.putBoolean("mRememberCheck"true);  
  101.                 }else{  
  102.                     editor.putBoolean("mRememberCheck"false);  
  103.                 }  
  104.                 editor.commit();  
  105.                 Intent intent = new Intent(Login.this,User.class) ;    //切換Login Activity至User Activity  
  106.                 startActivity(intent);  
  107.                 finish();  
  108.                 Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登入成功提示  
  109.             }else if(result==0){  
  110.                 Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登入失敗提示  
  111.             }  
  112.         }  
  113.     }  
  114.     public void cancel() {           //登出  
  115.         if (isUserNameAndPwdValid()) {  
  116.             String userName = mAccount.getText().toString().trim();    //獲取當前輸入的使用者名稱和密碼資訊  
  117.             String userPwd = mPwd.getText().toString().trim();  
  118.             int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
  119.             if(result==1){                                             //返回1說明使用者名稱和密碼均正確  
  120.                 Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();<span style="font-family: Arial;">//登出成功提示</span>  
  121.                 mPwd.setText("");  
  122.                 mAccount.setText("");  
  123.                 mUserDataManager.deleteUserDatabyname(userName);  
  124.             }else if(result==0){  
  125.                 Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //登出失敗提示  
  126.             }  
  127.         }  
  128.     }  
  129.     public boolean isUserNameAndPwdValid() {  
  130.         if (mAccount.getText().toString().trim().equals("")) {  
  131.             Toast.makeText(this, getString(R.string.account_empty),  
  132.                     Toast.LENGTH_SHORT).show();  
  133.             return false;  
  134.         } else if (mPwd.getText().toString().trim().equals("")) {  
  135.             Toast.makeText(this, getString(R.string.pwd_empty),  
  136.                     Toast.LENGTH_SHORT).show();  
  137.             return false;  
  138.         }  
  139.         return true;  
  140.     }  
  141.     @Override  
  142.     protected void onResume() {  
  143.         if (mUserDataManager == null) {  
  144.             mUserDataManager = new UserDataManager(this);  
  145.             mUserDataManager.openDataBase();  
  146.         }  
  147.         super.onResume();  
  148.     }  
  149.     @Override  
  150.     protected void onDestroy() {  
  151.         super.onDestroy();  
  152.     }  
  153.     @Override  
  154.     protected void onPause() {  
  155.         if (mUserDataManager != null) {  
  156.             mUserDataManager.closeDataBase();  
  157.             mUserDataManager = null;  
  158.         }  
  159.         super.onPause();  
  160.     }  
  161. }  
package com.example.foolishfan.user_v10;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Login extends Activity {                 //登入介面活動

    public int pwdresetFlag=0;
    private EditText mAccount;                        //使用者名稱編輯
    private EditText mPwd;                            //密碼編輯
    private Button mRegisterButton;                   //註冊按鈕
    private Button mLoginButton;                      //登入按鈕
    private Button mCancleButton;                     //登出按鈕
    private CheckBox mRememberCheck;

    private SharedPreferences login_sp;
    private String userNameValue,passwordValue;

    private View loginView;                           //登入
    private View loginSuccessView;
    private TextView loginSuccessShow;
    private TextView mChangepwdText;
    private UserDataManager mUserDataManager;         //使用者資料管理類


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        //通過id找到相應的控制元件
        mAccount = (EditText) findViewById(R.id.login_edit_account);
        mPwd = (EditText) findViewById(R.id.login_edit_pwd);
        mRegisterButton = (Button) findViewById(R.id.login_btn_register);
        mLoginButton = (Button) findViewById(R.id.login_btn_login);
        mCancleButton = (Button) findViewById(R.id.login_btn_cancle);
        loginView=findViewById(R.id.login_view);
        loginSuccessView=findViewById(R.id.login_success_view);
        loginSuccessShow=(TextView) findViewById(R.id.login_success_show);

        mChangepwdText = (TextView) findViewById(R.id.login_text_change_pwd);

        mRememberCheck = (CheckBox) findViewById(R.id.Login_Remember);

        login_sp = getSharedPreferences("userInfo", 0);
        String name=login_sp.getString("USER_NAME", "");
        String pwd =login_sp.getString("PASSWORD", "");
        boolean choseRemember =login_sp.getBoolean("mRememberCheck", false);
        boolean choseAutoLogin =login_sp.getBoolean("mAutologinCheck", false);
        //如果上次選了記住密碼,那進入登入頁面也自動勾選記住密碼,並填上使用者名稱和密碼
        if(choseRemember){
            mAccount.setText(name);
            mPwd.setText(pwd);
            mRememberCheck.setChecked(true);
        }

        mRegisterButton.setOnClickListener(mListener);                      //採用OnClickListener方法設定不同按鈕按下之後的監聽事件
        mLoginButton.setOnClickListener(mListener);
        mCancleButton.setOnClickListener(mListener);
        mChangepwdText.setOnClickListener(mListener);

        ImageView image = (ImageView) findViewById(R.id.logo);             //使用ImageView顯示logo
        image.setImageResource(R.drawable.logo);

        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();                              //建立本地資料庫
        }
    }
    OnClickListener mListener = new OnClickListener() {                  //不同按鈕按下的監聽事件選擇
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.login_btn_register:                            //登入介面的註冊按鈕
                    Intent intent_Login_to_Register = new Intent(Login.this,Register.class) ;    //切換Login Activity至User Activity
                    startActivity(intent_Login_to_Register);
                    finish();
                    break;
                case R.id.login_btn_login:                              //登入介面的登入按鈕
                    login();
                    break;
                case R.id.login_btn_cancle:                             //登入介面的登出按鈕
                    cancel();
                    break;
                case R.id.login_text_change_pwd:                             //登入介面的登出按鈕
                    Intent intent_Login_to_reset = new Intent(Login.this,Resetpwd.class) ;    //切換Login Activity至User Activity
                    startActivity(intent_Login_to_reset);
                    finish();
                    break;
            }
        }
    };

    public void login() {                                              //登入按鈕監聽事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //獲取當前輸入的使用者名稱和密碼資訊
            String userPwd = mPwd.getText().toString().trim();
            SharedPreferences.Editor editor =login_sp.edit();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1說明使用者名稱和密碼均正確
                //儲存使用者名稱和密碼
                editor.putString("USER_NAME", userName);
                editor.putString("PASSWORD", userPwd);

                //是否記住密碼
                if(mRememberCheck.isChecked()){
                    editor.putBoolean("mRememberCheck", true);
                }else{
                    editor.putBoolean("mRememberCheck", false);
                }
                editor.commit();

                Intent intent = new Intent(Login.this,User.class) ;    //切換Login Activity至User Activity
                startActivity(intent);
                finish();
                Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登入成功提示
            }else if(result==0){
                Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登入失敗提示
            }
        }
    }
    public void cancel() {           //登出
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //獲取當前輸入的使用者名稱和密碼資訊
            String userPwd = mPwd.getText().toString().trim();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1說明使用者名稱和密碼均正確
                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();<span style="font-family: Arial;">//登出成功提示</span>
                mPwd.setText("");
                mAccount.setText("");
                mUserDataManager.deleteUserDatabyname(userName);
            }else if(result==0){
                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //登出失敗提示
            }
        }

    }
    public boolean isUserNameAndPwdValid() {
        if (mAccount.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.account_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
    @Override
    protected void onResume() {
        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();
        }
        super.onResume();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    @Override
    protected void onPause() {
        if (mUserDataManager != null) {
            mUserDataManager.closeDataBase();
            mUserDataManager = null;
        }
        super.onPause();
    }
}
       Register.java【使用者註冊activity】
[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. package com.example.foolishfan.user_v10;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8. import android.widget.EditText;  
  9. import android.widget.Toast;  
  10. public class Register extends AppCompatActivity {  
  11.     private EditText mAccount;                        //使用者名稱編輯  
  12.     private EditText mPwd;                            //密碼編輯  
  13.     private EditText mPwdCheck;                       //密碼編輯  
  14.     private Button mSureButton;                       //確定按鈕  
  15.     private Button mCancelButton;                     //取消按鈕  
  16.     private UserDataManager mUserDataManager;         //使用者資料管理類  
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.register);  
  21.         mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);  
  22.         mPwd = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);  
  23.         mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);  
  24.         mSureButton = (Button) findViewById(R.id.register_btn_sure);  
  25.         mCancelButton = (Button) findViewById(R.id.register_btn_cancel);  
  26.         mSureButton.setOnClickListener(m_register_Listener);      //註冊介面兩個按鈕的監聽事件  
  27.         mCancelButton.setOnClickListener(m_register_Listener);  
  28.         if (mUserDataManager == null) {  
  29.             mUserDataManager = new UserDataManager(this);  
  30.             mUserDataManager.openDataBase();                              //建立本地資料庫  
  31.         }  
  32.     }  
  33.     View.OnClickListener m_register_Listener = new View.OnClickListener() {    //不同按鈕按下的監聽事件選擇  
  34.         public void onClick(View v) {  
  35.             switch (v.getId()) {  
  36.                 case R.id.register_btn_sure:                       //確認按鈕的監聽事件  
  37.                     register_check();  
  38.                     break;  
  39.                 case R.id.register_btn_cancel:                     //取消按鈕的監聽事件,由註冊介面返回登入介面  
  40.                     Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切換User Activity至Login Activity  
  41.                     startActivity(intent_Register_to_Login);  
  42.                     finish();  
  43.                     break;  
  44.             }  
  45.         }  
  46.     };  
  47.     public void register_check() {                                //確認按鈕的監聽事件  
  48.         if (isUserNameAndPwdValid()) {  
  49.             String userName = mAccount.getText().toString().trim();  
  50.             String userPwd = mPwd.getText().toString().trim();  
  51.             String userPwdCheck = mPwdCheck.getText().toString().trim();  
  52.             //檢查使用者是否存在  
  53.             int count=mUserDataManager.findUserByName(userName);  
  54.             //使用者已經存在時返回,給出提示文字  
  55.             if(count>0){  
  56.                 Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();  
  57.                 return ;  
  58.             }  
  59.             if(userPwd.equals(userPwdCheck)==false){     //兩次密碼輸入不一樣  
  60.                 Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();  
  61.                 return ;  
  62.             } else {  
  63.                 UserData mUser = new UserData(userName, userPwd);  
  64.                 mUserDataManager.openDataBase();  
  65.                 long flag = mUserDataManager.insertUserData(mUser); //新建使用者資訊  
  66.                 if (flag == -1) {  
  67.                     Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();  
  68.                 }else{  
  69.                     Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();  
  70.                     Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切換User Activity至Login Activity  
  71.                     startActivity(intent_Register_to_Login);  
  72.                     finish();  
  73.                 }  
  74.             }  
  75.         }  
  76.     }  
  77.     public boolean isUserNameAndPwdValid() {  
  78.         if (mAccount.getText().toString().trim().equals("")) {  
  79.             Toast.makeText(this, getString(R.string.account_empty),  
  80.                     Toast.LENGTH_SHORT).show();  
  81.             return false;  
  82.         } else if (mPwd.getText().toString().trim().equals("")) {  
  83.             Toast.makeText(this, getString(R.string.pwd_empty),  
  84.                     Toast.LENGTH_SHORT).show();  
  85.             return false;  
  86.         }else if(mPwdCheck.getText().toString().trim().equals("")) {  
  87.             Toast.makeText(this, getString(R.string.pwd_check_empty),  
  88.                     Toast.LENGTH_SHORT).show();  
  89.             return false;  
  90.         }  
  91.         return true;  
  92.     }  
  93. }  
package com.example.foolishfan.user_v10;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Register extends AppCompatActivity {
    private EditText mAccount;                        //使用者名稱編輯
    private EditText mPwd;                            //密碼編輯
    private EditText mPwdCheck;                       //密碼編輯
    private Button mSureButton;                       //確定按鈕
    private Button mCancelButton;                     //取消按鈕
    private UserDataManager mUserDataManager;         //使用者資料管理類
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);
        m