登陆页面的用户信息保存实现

本次试验说的是Android开发中的用户名和密码的保存实现,首先我们需要掌握一个知识点就是SharedPreference。

SharedPreference 介绍

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
SharedPreferences数据的四种操作模式
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
SharedPreferences 可以用来进行数据的共享,包括应用程序之间,或者同一个应用程序中的不同组件。比如两个activity除了通过Intent传递数据之外,也可以通过ShreadPreferences来共享数据。
访问接口和优先修改数据,并由getSharedPreferences(String,int)返回数据,为了统一设置参数,有一个单例类供所有的客户端共享。修改参数必须通过一个SharedPreferences.Editor对象,在存储他们时,以确保参数值有统一的状态和控制
目前此类不支持多线程。

功能的实现

1.项目的截图登陆页面的用户信息保存实现_第1张图片
2.步骤实现:
首先在原来的UI界面上添加一个复选框控件,并将其命名为“记住密码”

   "@+id/checkSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etPassword"
        android:layout_below="@+id/etPassword"
        android:text="@string/savePassword" 
        android:onClick="Save"  //单击触发Save执行保存
        />

然后在LoginActivity中去实现这个Save事件。
先定义两个String类型的变量来表示用户名和密码,即EditText控件上用户输入的字符。然后建一个findView方法查找控件,之后利用SharedPreferences知识建立一个Save方法,实现对密码的保存功能。

package com.example.minitwittersimulate;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.EditText;

public class LoginActivity extends Activity {
private EditText user;
private EditText password;
private String User;
private String Password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        findView();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    //获取页面控件
    public void findView(){
        user=(EditText) findViewById(R.id.etUsername);
        password=(EditText) findViewById(R.id.etPassword);
        User=user.toString();
        Password=password.toString();
    }
    //执行保存信息的操作
    public void Save(View view){
        SharedPreferences sharePreferences=getSharedPreferences("data", MODE_PRIVATE);
        Editor editor=sharePreferences.edit();
        editor.putString(User, Password);
        editor.commit();
    }

}

使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。
getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。在这里我们采用的是Activity.MODE_PRIVATE操作模式。这是一种默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND
3.完成后运行该程序登陆页面的用户信息保存实现_第2张图片
然后按照上面所说的
SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。需要在DDMS里的文件浏览器中查看即可。

本次试验结束,谢谢。

你可能感兴趣的:(android)