SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
下面根据一个小例子来更好的理解SharedPreferences的用法:当按返回键退出程序时,利用SharedPreferences实现对用户名和密码的存储,当再次打开程序就会保存有用户名和密码。
阶段一:进行界面布局(如下图)
具体代码如下:
<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" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="@string/username"
tools:context=".MainActivity" />
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="@string/password"
tools:context=".MainActivity" />
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</LinearLayout>
</LinearLayout>
阶段二:编写MainActivity,查找组件并进行相应的事件处理。具体代码如下:
package com.lks.sharedpreference;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity {
public static final String SETTING_INFOS="SETTING_infos";
private EditText nameText;
private EditText passwordText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, MODE_PRIVATE);
nameText=(EditText) this.findViewById(R.id.name);
passwordText=(EditText) this.findViewById(R.id.password);
String name=sharedPreferences.getString("name", "");
String password=sharedPreferences.getString("password", "");
if(name!=null&&!"".equals(name)){
nameText.setText(name);
}
if(password!=null&&!"".equals(password)){
passwordText.setText(name);
}
}
@Override
protected void onStop() {
super.onStop();
String name=nameText.getText().toString();
String password=passwordText.getText().toString();
SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, Context.MODE_PRIVATE);
Editor editor=sharedPreferences.edit();
editor.putString("name", name);
editor.putString("password", password);
editor.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
阶段三:输入用户名和密码
然后按返回键退出程序,当再次打开程序,会出现已经保存的用户名和密码,如下图:
注:SharedPreferences是以XML的格式以文件的方式自动保存的,在DDMS中的File Explorer中展开到 /data/data/<package name>/shared_prefs下。