SharedPreferences偏好设置

数据存储--偏好设置
·偏好设置(SharedPreference)提供了一种以键值对(K-V)的形式
保存并读取持久数据的方式;
·偏好设置的本质是使用XML文件保存数据,但开发人员无须考虑xml文件的
解析问题,仅需像使用Map一样使用偏好设置即可;
·偏好设置属于应用程序私有,仅应用程序本身可访问;
·偏好设置一般用于保存用户信息,用户设置等数据量较小的数据;
·偏好设置的文件保存在/data/data/应用程序包名/shared_prefs/文件夹下;

SharedPreferences 接口
·在Android系统中,使用SharedPreferences接口的对象实现偏好设置的读取与写入;
·使用ContextWrapper类定义的getSharedPreferences()方法即可获取SharedPreference接口的对象;

该方法的签名为:
public SharedPreferences getSharedPreferences(String name ,int mode)

第一个参数是文件名第二个参数是权限

写入偏好设置:

·在写入偏好设置时,需要使用Editor对象,通过ShardPreferences的edit()方法即可获取该对象;

·通过Editor的put系列方法即可写入数据,例如putString(String key,String value);

· 写入完成后,应该调用Editor的commit()方法提交,以完成写入过程

//写入数据到SharedPreferences
		SharedPreferences sp = getSharedPreferences(fileName,MODE_PRIVATE);
		Editor editor = sp.edit();
		editor.putString("username", username);
		editor.putInt("age", age);
		editor.commit();


读取偏好设置:
·在获取到SharedPreferences对象之后,直接调用get系列方法即可获取所需数据,例如String getString(String key,String defValue);

//读取数据
		SharedPreferences sp = getSharedPreferences(fileName, MODE_PRIVATE);
		String username = sp.getString("username", null);//第二个参数代表找不到的情况给一个null
		int age = sp.getInt("age", -1);


使用偏好设置保存数据:

案例:


MainActivity.java


package com.example.sharedpreference_tm;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText mUsernameET,mAgeET;
	private String fileName = "config";//这里的文件名不需要填扩展名,android系统会自动加上.xml

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mAgeET = (EditText) findViewById(R.id.et_age);
		mUsernameET = (EditText) findViewById(R.id.et_username);
//读取数据
		SharedPreferences sp = getSharedPreferences(fileName, MODE_PRIVATE);
		String username = sp.getString("username", null);//第二个参数代表找不到的情况给一个null
		int age = sp.getInt("age", -1);
		if(username != null){
			mUsernameET.setText(username);

		}
		if (age!=-1) {
			mAgeET.setText(age+"");	/*
            int值不要直接往做为EditText的setText()方法的参数,
			因为会setText()有好多重载方法,传入int会调用
            void android.widget.TextView.setText(int resid)
			会当成资源id当成资源的索引
			 */
		}

	}

	public void savePrefs(View v){
		String username = mUsernameET.getText().toString();
		int age = Integer.valueOf(mAgeET.getText().toString());

		//写入数据到SharedPreferences
		SharedPreferences sp = getSharedPreferences(fileName,MODE_PRIVATE);
		Editor editor = sp.edit();
		editor.putString("username", username);
		editor.putInt("age", age);
		editor.commit();

		Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
	}
}










  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值