|
很多时候我们开发的软件需要保存一些用户设置的信息,例如是否记住密码、显示的字体大小等等。如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件进行保存。
在Android国度里,我们使用SharedPreferences是最合适不过的了,SharedPreferences是一个轻量级的存储类,特别适合用于保存软件配置参数。SharedPreferences其背后是用xml文件存放数据,文件存放在/data/data/package name/shared_prefs目录下。
下面我写了一个SharedPreferences_Demo,需要的同志可以Download下来看看。欢迎交流学习。
首先,我写了一个工具类,用来进行SharedPreferences的相关操作:
Java代码
package com.iteye.dengwho;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SharedPreferencesUtil {
private SharedPreferences sp;
private Editor editor;
private final static String SP_NAME = "mydata";
private final static int MODE = Context.MODE_WORLD_READABLE
+ Context.MODE_WORLD_WRITEABLE;
public SharedPreferencesUtil(Context context) {
sp = context.getSharedPreferences(SP_NAME, MODE);
editor = sp.edit();
}
public boolean save(String key, String value) {
editor.putString(key, value);
// 亿万不要忘了加commit呐~~~!!!!
return editor.commit();
}
public String read(String key) {
String str = null;
str = sp.getString(key, null);
return str;
}
}
package com.iteye.dengwho;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SharedPreferencesUtil {
private SharedPreferences sp;
private Editor editor;
private final static String SP_NAME = "mydata";
private final static int MODE = Context.MODE_WORLD_READABLE
+ Context.MODE_WORLD_WRITEABLE;
public SharedPreferencesUtil(Context context) {
sp = context.getSharedPreferences(SP_NAME, MODE);
editor = sp.edit();
}
public boolean save(String key, String value) {
editor.putString(key, value);
// 亿万不要忘了加commit呐~~~!!!!
return editor.commit();
}
public String read(String key) {
String str = null;
str = sp.getString(key, null);
return str;
}
}
这里我用我的血泪屎来提醒大家在save的操作时1000万不要忘了commit()。
另外,因为SharedPreferences本身就是以XML保存文件的,所以我们不用给它命名时多加“.xml”后缀。
下面是Activity类:
Java代码
package com.iteye.dengwho;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SharedPreferenced_DemoActivity extends Activity {
private Button saveBtn;
private Button readBtn;
private EditText inputEv;
private EditText showEv;
private SharedPreferencesUtil util;
/**
* 给控件初始化
*/
public void init() {
util = new SharedPreferencesUtil(this);
saveBtn = (Button) findViewById(R.id.save_btn);
readBtn = (Button) findViewById(R.id.read_btn);
inputEv = (EditText) findViewById(R.id.input_et);
showEv = (EditText) findViewById(R.id.showinfo_et);
// 设置监听
setListener();
}
/**
* 给Button加监听事件
*/
public void setListener() {
saveBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
boolean b = util.save("mykey", inputEv.getText().toString());
String msg;
if (b) {
msg = "保存成功";
} else {
msg = "保存失败";
}
Toast.makeText(SharedPreferenced_DemoActivity.this, msg,
Toast.LENGTH_SHORT).show();
}
});
readBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println("read...");
String value = util.read("mykey");
showEv.setText(value);
}
});
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
}
package com.iteye.dengwho;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SharedPreferenced_DemoActivity extends Activity {
private Button saveBtn;
private Button readBtn;
private EditText inputEv;
private EditText showEv;
private SharedPreferencesUtil util;
/**
* 给控件初始化
*/
public void init() {
util = new SharedPreferencesUtil(this);
saveBtn = (Button) findViewById(R.id.save_btn);
readBtn = (Button) findViewById(R.id.read_btn);
inputEv = (EditText) findViewById(R.id.input_et);
showEv = (EditText) findViewById(R.id.showinfo_et);
// 设置监听
setListener();
}
/**
* 给Button加监听事件
*/
public void setListener() {
saveBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
boolean b = util.save("mykey", inputEv.getText().toString());
String msg;
if (b) {
msg = "保存成功";
} else {
msg = "保存失败";
}
Toast.makeText(SharedPreferenced_DemoActivity.this, msg,
Toast.LENGTH_SHORT).show();
}
});
readBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println("read...");
String value = util.read("mykey");
showEv.setText(value);
}
});
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
}
运行界面:
保存成功后我们可以找到相应的XML文件:
我们把XML文件提取出来打开,就可以看到我们保存的Key和Value了
|
|