1. 程式人生 > >Android SharedPreferences應用 實現本地註冊登陸 功能簡單易懂(例項)

Android SharedPreferences應用 實現本地註冊登陸 功能簡單易懂(例項)

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);
	 }
}