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

本篇来介绍一下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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值