一、SharedPreferences简介
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
二、存储路径
其存储位置在/data/data/<包名>/shared_prefs目录下。
此路径在DDMS界面的FileExplorer可以看到:
三、存储步骤
1、根据Context获取SharedPreferences对象
2、利用edit()方法获取Editor对象。
3、通过Editor对象存储key-value键值对数据。
4、通过commit()方法提交数据。
//获取SharedPreferences对象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
//存入数据
Editor editor = sp.edit();
editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();
//如果NOT_EXIST不存在,则返回值为"none"
sp.getString("STRING_KEY", "none");
四、例子
1、MainActivity.java
package com.example.android_my_shareperferences;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
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.TextView;
@SuppressLint("ShowToast")
public class MainActivity extends Activity {
private Button tijiaoshujuButton;
private Button huoqushujuButton;
private EditText editText;
private TextView textView;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initIO();
initCunChu();
}
private void initIO() {
tijiaoshujuButton = (Button) findViewById(R.id.button1);
huoqushujuButton = (Button) findViewById(R.id.button2);
editText = (EditText) findViewById(R.id.editText1);
textView = (TextView) findViewById(R.id.textView1);
tijiaoshujuButton.setOnClickListener(tijiao);
huoqushujuButton.setOnClickListener(xianshi);
}
private void initCunChu() {
// 获取SharedPreferences对象
Context ctx = MainActivity.this;
sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
}
OnClickListener tijiao = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.getContext();
// 存入数据
Editor editor = sp.edit();
editor.putString("CITY", editText.getText().toString());
editor.commit();
}
};
OnClickListener xianshi = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 读取数据
String aString = sp.getString("CITY", "none");
textView.setText(aString);
}
};
@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;
}
}
2、activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:onClick="tijiao"
android:text="提交数据"
tools:ignore="HardcodedText" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/button1"
android:ems="10"
android:textSize="20sp"
tools:ignore="TextFields" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/button1"
android:layout_marginTop="39dp"
android:text="显示获取的数据"
android:textSize="20sp"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:onClick="xianshi"
android:text="获取数据"
tools:ignore="HardcodedText" />
</RelativeLayout>
运行效果: