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

实现的简单界面如下:



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

第一种是:

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

第二种是:

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

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


工程目录结构:



源代码:

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/username" />    <EditText         android:id="@+id/name"        android:layout_width="fill_parent"        android:singleLine="true"        android:layout_height="wrap_content"/>    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/age" />    <EditText         android:id="@+id/age"        android:layout_width="fill_parent"        android:numeric="integer"        android:singleLine="true"        android:layout_height="wrap_content"/>    <Button         android:id="@+id/save"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/save"        android:onClick="save"/></LinearLayout>

Strings.xml

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

MainActivity.java

package com.preferences.activity;import java.util.Map;import com.preferences.service.PreferencesService;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {private EditText name;private EditText age;private PreferencesService service;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        name = (EditText)findViewById(R.id.name);        age = (EditText)findViewById(R.id.age);        service = new PreferencesService(MainActivity.this);        //打开时读取保存的参数        Map<String,String> params = service.getPreferences();        name.setText(params.get("username"));        age.setText(params.get("age"));    }    public void save(View v){    String userName = name.getText().toString();    int userAge = Integer.parseInt(age.getText().toString());    service.save(userName, userAge);    Toast.makeText(MainActivity.this, "保存成功", 1).show();    }}

PreferencesService.java

package com.preferences.service;import java.util.HashMap;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;public class PreferencesService {private Context context;//构造方法中传入上下文对象public PreferencesService(Context context) {super();this.context = context;}/** * 保存参数 * @param name 姓名 * @param age 年龄 */public void save(String name,int age){SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();editor.putString("username", name);editor.putInt("age", age);//目前是保存在内存中,还没有保存到文件中editor.commit();//数据提交到xml文件中}/** * 获取各项配置参数 * @return params */public Map<String,String> getPreferences(){SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);Map<String,String> params = new HashMap<String, String>();params.put("username", sharedPreferences.getString("username", ""));params.put("age", String.valueOf(sharedPreferences.getInt("age", 0)));return params;}}

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



更多相关文章

  1. 设置Activity大小不再全屏原理
  2. Your project contains error(s)... 如何解决?
  3. 编程总结:Android(安卓)读写文件
  4. Java乔晓松-android中的手势识别的详解
  5. Android系统集成第三方pre-build库和程序(转)
  6. 8.16 提炼参数对象
  7. 详解Android(安卓)中AsyncTask 的使用
  8. android PreferenceActivity结合PreferenceFragment实现参数设置
  9. Android(安卓)SQLite使用SQLiteOpenHelper类对数据库进行操作

随机推荐

  1. Android学习笔记之一 Activity的生命周期
  2. 你确定已经掌握了adb的使用?
  3. Flutter的一些冷门操作
  4. Android源码50例汇总,欢迎各位下载 【转载
  5. Android更新UI的四种方法详解
  6. android Looper Message 代码分析
  7. Android学习笔记:布局
  8. Android中Activity常用功能设置小结(包括
  9. Android(安卓)Studio开发之JNI ---- 加载
  10. android webview中使用Java调用JavaScrip