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

翻译 2016年08月31日 08:45:36

版权所有: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目录下:



相关文章推荐

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

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

Android基础入门教程——6.2 数据存储与访问之——SharedPreferences保存用户偏好参数

Android基础入门教程——6.2 数据存储与访问之——SharedPreferences保存用户偏好参数 本节引言: 1.SharedPreferences使用示例: 2.读取其他应用的Share...

Android 数据存储与访问之——SharedPreferences保存用户偏好参数

Android 数据存储与访问之——SharedPreferences保存用户偏好参数       本节介绍的是使用SharedPreferences(保存用户偏好参数)保存数据,当我们的应用想要保...

android 数据存储和访问方式二:SharedPreferences(共享参数)详解

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是windows软件通常我们会采用ini文件进行保存,如...

数据存储之SharedPreferences(系统偏好设置)(一)

SharedPreferences使用Map数据结构来存储数据,以键值对的方式存数,采用了XML格式将数据存储到设备中。一般来讲,使用SharedPreferences主要用来存储一些用户喜好的设置信...

iOS-数据存储方式二之偏好设置存储(NSUserDefaults)

用来保存应用程序设置和属性,用户保存的数据,用户再次打开应用程序或者开机后这些数据仍然存在。每个应用都有个NSUserDefaults实例,通过它来存取偏好设置,比如,保存用户名、字体大小、是否自动登...

Android 数据存储之 共享参数 SharedPreferences

数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存...

android数据存储--共享参数(sharedPreferences)

sharedPreference 在android开发中常常用来存储一些简单的、数据量较少的数据,这些数据通常用来保存用户的偏好,如用户名密码、还有屏幕的亮度、字体大小之类的。sharedPrefer...

android数据存储之SharedPreferences方式

在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Content provider)和网络。 今儿个咱学SharedPrefe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)