本次试验说的是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.项目的截图
2.步骤实现:
首先在原来的UI界面上添加一个复选框控件,并将其命名为“记住密码”
<CheckBox
android:id="@+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.完成后运行该程序
然后按照上面所说的
SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。需要在DDMS里的文件浏览器中查看即可。
本次试验结束,谢谢。