Android SharedPreferences應用 實現本地註冊登陸 功能簡單易懂(例項)
阿新 • • 發佈:2019-01-05
SharedPreferences
在Android系統中,這些資訊以XML檔案的形式儲存在 /data/data/PACKAGE_NAME /shared_prefs 目錄下
先貼個效果圖
這個是自己的手機截圖,部分手機解析度可能不一樣
1.
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/login" > <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TableRow> <TextView android:layout_width="90px" android:layout_height="wrap_content" android:layout_marginLeft="50px" android:layout_marginTop="200px" android:gravity="center_horizontal" android:text="使用者名稱:" android:textColor="#f00" android:textSize="15sp" /> <EditText android:id="@+id/username" android:layout_width="250px" android:layout_height="wrap_content" android:layout_marginTop="200px" android:singleLine="true" /> </TableRow> <TableRow> <TextView android:layout_width="90px" android:layout_height="wrap_content" android:layout_marginLeft="50px" android:gravity="center_horizontal" android:text="密碼:" android:textColor="#f00" android:textSize="15sp" /> <EditText android:id="@+id/password" android:layout_width="250px" android:layout_height="wrap_content" android:password="true" /> </TableRow> </TableLayout> <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TableRow> <Button android:id="@+id/login" android:layout_width="90px" android:layout_height="wrap_content" android:layout_marginLeft="130px" android:layout_marginTop="30px" android:gravity="center" android:text="登入" /> <Button android:id="@+id/exit" android:layout_width="90px" android:layout_height="wrap_content" android:text="退出" android:gravity="center" android:layout_marginLeft="80px" android:layout_marginTop="30px" /> </TableRow> </TableLayout> <Button android:id="@+id/reg" android:layout_width="90px" android:layout_height="wrap_content" android:text="註冊" android:gravity="center" android:layout_marginLeft="130px" ></Button> </LinearLayout>
2.activity_loginok.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/mei" > </LinearLayout>
MainActivity.java
package com.example.logineasydemo; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { //宣告需要的元件 private Button login,exit,reg; private EditText username,password; private SharedPreferences share;//宣告SharedPreferences @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intiview();//初始化檢視,尋找id saveuser();//先儲存一個數據admin 123456 exit.setOnClickListener(new Listenerimp());//退出的監聽事件 reg.setOnClickListener(new RegListenerimp());//註冊的監聽事件 //登陸的事件監聽處理內部類 login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //獲取輸入的資訊 String name=username.getText().toString(); String pass=password.getText().toString(); //判斷輸入資訊是否為空 if(name.trim().equals("") || pass.trim().equals("")) { Toast.makeText(MainActivity.this, "使用者名稱和密碼不能為空", Toast.LENGTH_LONG).show(); } //獲取儲存檔案中的使用者名稱和密碼 String savedUsername = share.getString("username",""); String savedPassword = share.getString("password",""); //檢視輸入的密碼和名字是否一致 if(name.trim().equals(savedUsername) && pass.trim().equals(savedPassword)) { Toast.makeText(MainActivity.this, "恭喜,親,使用者名稱和密碼都正確!", Toast.LENGTH_LONG).show(); //成功登陸,進入LoginokActivity介面 Intent intent=new Intent(MainActivity.this,LoginokActivity.class); startActivity(intent); finish(); } else { //錯誤的話 Toast.makeText(MainActivity.this, "使用者名稱或者密碼錯誤,請確認資訊或者去註冊", Toast.LENGTH_LONG).show(); return; } } }); } private class Listenerimp implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub finish();//結束一個Activity } } private class RegListenerimp implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub //定義兩個字串常量,並獲取資訊 final String nam=username.getText().toString(); final String pas=password.getText().toString(); //判讀資訊是否空 if(nam.trim().equals("") || pas.trim().equals("")) { Toast.makeText(MainActivity.this, "註冊時,使用者名稱和密碼都不能為空", Toast.LENGTH_LONG).show(); return;//為空就會返回 } //進入註冊的Dialog Dialog dialog=new AlertDialog.Builder(MainActivity.this) .setTitle("註冊") .setMessage("你確定註冊資訊嗎?") .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //儲存輸入的資訊 Editor 別忘了 edit.commit();提交 share=getSharedPreferences("info",Activity.MODE_PRIVATE); Editor edit=share.edit(); edit.putString("username", nam); edit.putString("password", pas); edit.commit(); //提示成功註冊 Toast.makeText(MainActivity.this, "恭喜,註冊成功", Toast.LENGTH_LONG).show(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create();//建立一個dialog dialog.show();//顯示對話方塊,否者不成功 } } //實現寫一個admin 123456的使用者 private void saveuser() { // TODO Auto-generated method stub share=getSharedPreferences("info",Activity.MODE_PRIVATE); Editor edit=share.edit(); edit.putString("username", "admin"); edit.putString("password", "123456"); edit.commit(); } private void intiview() { // TODO Auto-generated method stub login=(Button)findViewById(R.id.login); exit=(Button)findViewById(R.id.exit); reg=(Button)findViewById(R.id.reg); username=(EditText)findViewById(R.id.username); password=(EditText)findViewById(R.id.password); } }
LoginokActivity
package com.example.logineasydemo;
import android.app.Activity;
import android.os.Bundle;
public class LoginokActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loginok);
}
}