2013-03-08
16_采用SharedPreferences保存用戶偏好設置參數
-------------------------------------------------
1.eclipse就是通過xml來保存用戶的偏好設置-->window-->perfences
---------------------------------------
2.利用SharedPreferences(參數)保存用戶在android軟件上設置的偏好;
--------------------------------
3.android:numeric="integer"限定輸入框只能輸入整形
------------------------------------------------------
4.<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button"
android:onClick="save"//指定點擊的方法,這個方法必須要
在//SharedPreferencesActivity.java中有定義
/>
-------------------------------------------------------
5.如何從SharedPreferences讀取數據
軟件需求,如果用戶曾經設置過參數那麼,當用戶再次打開的時候,要把用戶曾經設置的參數
顯示出來
---------------------------------------------
6. //當軟件需要參數設置的時候,要用到這個
2013-03-09
----------------------------------
7.把用戶的數據保存到xml文件中,並創建xml文件,和讀取xml文件,以顯示用戶的設置
---------------------------------------------------
8.所用代碼如下:
項目: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;
}
}
--------------------------------------------------------
2./SharedPreferences/src/com/credream/SharedPreferences/SharedPreferencesActivity
.java
----------------
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的時候,可以這樣用
//當軟件需要參數設置的時候,要用到這個
}
}
--------------------------------------------------------
3./SharedPreferences/res/layout/main.xml
<?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>
------------------------------------------------------
4./SharedPreferences/res/values/strings.xml
<?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>
---------------------------------------------------