您的位置:首页 > Web前端

SharedPreferences的用法、方法

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

实现的简单界面如下:



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

第一种是:

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

第二种是:

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

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

工程目录结构:



源代码:

main.xml

[html] view
plaincopyprint?

<?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

[html] view
plaincopyprint?

<?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

[html] view
plaincopyprint?

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

[html] view
plaincopyprint?

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目录下:



地址: http://download.csdn.net/category
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: