采用SharedPreferences保存用户偏好设置参数
采用SharedPreferences保存用户偏好设置参数
软件需求,如果用户曾经设置过参数那么,当用户再次打开的时候,要把用户曾经设置的参数
com.credream.SharedPreferences.PreferencesService.java
package com.credream.SharedPreferences;
import java.util.HashMap;
import java.util.Map;
import com.credream.SharedPreferences.R.string;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class PreferencesService
{
private Context context;
public PreferencesService(Context context)
{
this.context = context;
}
/**
* 保存参数
* @param name 姓名
* @param age 年龄
*/
public void save(String name, Integer age)
{
SharedPreferences preferences=context.getSharedPreferences("credream",
Context.MODE_PRIVATE);
//不要添加后缀名,第二个是操作模式
Editor editor=preferences.edit();
editor.putString("name", name);
editor.putInt("age", age);//第一个是参数名称,第二个是参数值
//目前是保存在内存中
editor.commit();//把内存中存在的数据写到文件中
}
/**
* 获取各项配置参数
* @return
*/
public Map<String, String> getPreference(){
Map<String, String> params=new HashMap<String, String>();
SharedPreferences preferences=context.getSharedPreferences("credream",
Context.MODE_PRIVATE);
params.put("name", preferences.getString("name", ""));
params.put("age", String.valueOf(preferences.getInt("age", 0)));
//第一个是xml中的<name>,第二个参数是默认值""
return params;
}
}package com.credream.SharedPreferences;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class SharedPreferencesActivity extends Activity {
/** Called when the activity is first created. */
private EditText nameText;
private EditText ageText;
private PreferencesService service;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nameText=(EditText)this.findViewById(R.id.name);
ageText=(EditText)this.findViewById(R.id.age);
service=new PreferencesService(this);//放到oncreate,只需要实例化一次这个对象就
可以了
Map<String, String> params=service.getPreference();
nameText.setText(params.get("name"));
ageText.setText(params.get("age"));
}
public void save(View v){
String name=nameText.getText().toString();
String age=ageText.getText().toString();
service.save(name,Integer.valueOf(age));
Toast.makeText(getApplicationContext(), R.string.success, 1).show();
//this.getPreferences(mode);
//默认情况下,会采用
//Activity这个类的名称作为xml文件的名称
//在Activity类中如果需要Preference的时候,可以这样用
//当软件需要参数设置的时候,要用到这个
}
}<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/name" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/name" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/age" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:id="@+id/age" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button" android:onClick="save" />www.2cto.com </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, SharedPreferencesActivity!</string> <string name="app_name">软件参数设置</string> <string name="name">姓名</string> <string name="age">年龄</string> <string name="button">保存参数</string> <string name="success">保存完成</string> </resources>




