关闭

Android数据存储方式(二)SharedPreferences(偏好参数保存)

224人阅读 评论(0) 收藏 举报
分类:

版权所有:http://blog.csdn.net/wulianghuan/article/details/8607628

本篇来介绍一下Android数据存储的第二中方式:SharedPreferences,这种方式在保存软件的各项参数时应用最广泛,一般采用.xml文件来进行存放。

实现的简单界面如下:



在Activity的子类中,我们可以通过两种方式来获取

第一种是:

   getPreferences(MODE_PRIVATE);  //这种方式默认采用所在的类名作为xml文件的名称

第二种是:

getSharedPreferences("preferencesFile", Context.MODE_PRIVATE); //我们可以指定参数保存文件的文件名称

本篇中采用第二种方式在service对象中指定保存的文件名称。


工程目录结构:



源代码:

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <TextView  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="@string/username" />  
  11.     <EditText   
  12.         android:id="@+id/name"  
  13.         android:layout_width="fill_parent"  
  14.         android:singleLine="true"  
  15.         android:layout_height="wrap_content"/>  
  16.     <TextView  
  17.         android:layout_width="fill_parent"  
  18.         android:layout_height="wrap_content"  
  19.         android:text="@string/age" />  
  20.     <EditText   
  21.         android:id="@+id/age"  
  22.         android:layout_width="fill_parent"  
  23.         android:numeric="integer"  
  24.         android:singleLine="true"  
  25.         android:layout_height="wrap_content"/>  
  26.     <Button   
  27.         android:id="@+id/save"  
  28.         android:layout_width="fill_parent"  
  29.         android:layout_height="wrap_content"  
  30.         android:text="@string/save"  
  31.         android:onClick="save"/>  
  32.   
  33. </LinearLayout>  

Strings.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, MainActivity!</string>  
  4.     <string name="app_name">软件参数设置</string>  
  5.     <string name="username">姓名</string>  
  6.     <string name="age">年龄</string>  
  7.     <string name="save">保存参数</string>  
  8. </resources>  

MainActivity.java
  1. package com.preferences.activity;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import com.preferences.service.PreferencesService;  
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.EditText;  
  10. import android.widget.Toast;  
  11.   
  12. public class MainActivity extends Activity {  
  13.     private EditText name;  
  14.     private EditText age;  
  15.     private PreferencesService service;  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         name = (EditText)findViewById(R.id.name);  
  21.         age = (EditText)findViewById(R.id.age);  
  22.         service = new PreferencesService(MainActivity.this);  
  23.         //打开时读取保存的参数  
  24.         Map<String,String> params = service.getPreferences();  
  25.         name.setText(params.get("username"));  
  26.         age.setText(params.get("age"));  
  27.     }  
  28.     public void save(View v){  
  29.         String userName = name.getText().toString();  
  30.         int userAge = Integer.parseInt(age.getText().toString());  
  31.         service.save(userName, userAge);  
  32.         Toast.makeText(MainActivity.this, "保存成功", 1).show();  
  33.     }  
  34. }  

PreferencesService.java
  1. package com.preferences.service;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5. import android.content.Context;  
  6. import android.content.SharedPreferences;  
  7. import android.content.SharedPreferences.Editor;  
  8.   
  9. public class PreferencesService {  
  10.     private Context context;  
  11.     //构造方法中传入上下文对象  
  12.     public PreferencesService(Context context) {  
  13.         super();  
  14.         this.context = context;  
  15.     }  
  16.   
  17.     /**  
  18.      * 保存参数  
  19.      * @param name 姓名  
  20.      * @param age 年龄  
  21.      */  
  22.     public void save(String name,int age){  
  23.         SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);  
  24.         Editor editor = sharedPreferences.edit();  
  25.         editor.putString("username", name);  
  26.         editor.putInt("age", age);  //目前是保存在内存中,还没有保存到文件中  
  27.         editor.commit();    //数据提交到xml文件中  
  28.     }  
  29.       
  30.     /**  
  31.      * 获取各项配置参数  
  32.      * @return params  
  33.      */  
  34.     public Map<String,String> getPreferences(){  
  35.         SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);  
  36.         Map<String,String> params = new HashMap<String, String>();  
  37.         params.put("username", sharedPreferences.getString("username", ""));  
  38.         params.put("age", String.valueOf(sharedPreferences.getInt("age", 0)));  
  39.         return params;  
  40.     }  
  41. }  

当我们点击保存参数按钮之后,数据会保存到 /data/data/ [packagename] /shared_prefs目录下:



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:85795次
    • 积分:2790
    • 等级:
    • 排名:第12924名
    • 原创:101篇
    • 转载:27篇
    • 译文:100篇
    • 评论:6条