SharedPreferences存储获取信息例子

SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

使用SharedPreferences保存key-value对的步骤如下:

  (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。

  (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。

  (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

  (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

今天上午自己做了个小例子,下面上传代码:本工程含有两个java文件。

MyPreferenceActivity.java文件如下:本文件主要用来设置界面并存储参数值
public class MyPreferenceActivity extends PreferenceActivity implements OnPreferenceChangeListener{

	private EditTextPreference BaudRate;
	private EditTextPreference port;
	private EditTextPreference group;

	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		//加入preferences的布局文件,这里和普通的布局文件加入方式不一样,注意区别
		addPreferencesFromResource(R.layout.preference);
		//获得一个共享的preferences,通过该变量来读取配置文件中的各参数值
		SharedPreferences sp = getPreferenceManager().getSharedPreferences();

		BaudRate = (EditTextPreference) findPreference("set_BaudRate");
		BaudRate.setOnPreferenceChangeListener(this);
		port = (EditTextPreference) findPreference("set_serialport");
		port.setOnPreferenceChangeListener(this);
		group = (EditTextPreference) findPreference("set_other");
		group.setOnPreferenceChangeListener(this);

		//sp的getString方法有两个参数,该方法是获取配置参数的方法,参数一是首选参数,一般在生成都配置文件中,参数二是默认参数,在无法读取参数一的情况下就用参数二

		String BaudRateStr = sp.getString("set_BaudRate", getResources().getString(R.string.ip));
		BaudRate.setSummary(BaudRateStr);
		BaudRate.setText(BaudRateStr);

		String portStr = sp.getString("set_serialport", getResources().getString(R.string.p));
		port.setSummary(portStr);
		port.setText(portStr);

		String groupStr = sp.getString("set_other", getResources().getString(R.string.group));
		group.setSummary(groupStr);
		group.setText(groupStr);
	}

	@Override
	public boolean onPreferenceChange(Preference preference, Object newValue) {
		if(preference == BaudRate){
			preference.setSummary(newValue.toString());
		}
		if(preference == port){
			preference.setSummary(newValue.toString());
		}
		if(preference == group){
			preference.setSummary(newValue.toString());
		}
		return true;
	}
}

SetActivity.java文件如下:

public class SetActivity extends Activity {

	SharedPreferences preferences;
/*	SharedPreferences.Editor editor;*/

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取只能被本应用程序读、写的SharedPreferences对象
				preferences = getSharedPreferences("com.hiden.settest_preferences", MODE_WORLD_READABLE);
				Button read = (Button) findViewById(R.id.read);
				read.setOnClickListener(new OnClickListener()
				{
					@Override
					public void onClick(View arg0)
					{
						Log.d("SP", preferences.getString("set_BaudRate", "none"));
						// 读取字符串数据
						String BaudRate = preferences.getString("set_BaudRate", null);
						String port = preferences.getString("set_serialport", null);
						String group = preferences.getString("set_other", null);

						String result = "波特率的值为:"+BaudRate+"端口的值为:"+ port+ "其他的值为:"+group;

						// 使用Toast提示信息
						Toast.makeText(SetActivity.this, result, 5000).show();
					}
				});		

	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		MenuInflater inflator = new MenuInflater(this);
		// 状态R.menu.context对应的菜单,并添加到menu中
		inflator.inflate(R.menu.myset, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	// 选项菜单的菜单项被单击后的回调方法
	public boolean onOptionsItemSelected(MenuItem mi)
	{
		if(mi.isCheckable())
		{
			mi.setChecked(true);  //②
		}
		// 判断单击的是哪个菜单项,并针对性的作出响应。
		switch (mi.getItemId())
		{

			case R.id.plain_item:
				// 创建启动FirstActivity的Intent
				Intent intent = new Intent(SetActivity.this
						, MyPreferenceActivity.class);
				// 启动intent对应的Activity
				startActivity(intent);
				break;
		}
		return true;
	}

}

本程序用来启动主界面,点击按钮获取

SharedPreferences 的存储信息。<span style="background-color: rgb(188, 211, 229); font-family: simsun; ">preference.xml代码如下:</span>
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android"
            android:title="Settings">
	<PreferenceCategory
        android:title="设置">
        <EditTextPreference
        	android:key="set_BaudRate"
            android:title="@string/BaudRate"/>
        <EditTextPreference
        	android:key="set_serialport"
        	android:numeric="integer"
            android:title="@string/serial_interface"
           />
        <EditTextPreference
    		android:key="set_other"
    		android:title="@string/other"
            android:dialogTitle="@string/ht_group"/>
    </PreferenceCategory>

</PreferenceScreen>            

主界面如下:

利用ActionBar在界面上方添加了设置,点击设置出现下面界面

点击读取按钮,出现以下界面:

这样,存储的数据就可以得到了,源代码可以从这里下载:http://download.csdn.net/detail/liaction/7694989

SharedPreferences存储获取信息例子

时间: 2024-10-10 16:47:16

SharedPreferences存储获取信息例子的相关文章

使用SharedPreferences存储用户名信息

1 package com.example.sharedpreferences; 2 3 import android.os.Bundle; 4 import android.preference.PreferenceManager; 5 import android.app.Activity; 6 import android.content.SharedPreferences; 7 import android.content.SharedPreferences.Editor; 8 impo

[Android] 使用JSON和SharedPreferences存储用户自定义类

先看一下Google官方对于SharedPreferences的定义: The SharedPreferences class provides a general framework that allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: booleans,

Android开发:SharedPreferences 存储数据、获取数据

email:[email protected] 开发环境:win7 64位,Android Studio. 关于SharedPreferences.个人理解把它理解为一种轻量级的Database.存取形式和map一样:<key,value>,以xml文件存储. 我仅仅是用它来存储一下登录信息和登录状态,这样每次登录的时候就能够从本地读取信息. 一.存储 /** * 保存个人信息在本地 */ SharedPreferences sharedPreferences = getSharedPrefe

使用SharedPreferences保存和获取信息

//保存信息 SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);  //Context.MODE_PRIVATE 私有类型 Editor editor = sp.edit(); //保存数据 editor.putString("username", username); editor.putString("password", p

使用SharedPreferences存储数据

SharedPreferences是一种轻行的数据存储方式,本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.Android有很多种存储数据的方式,但当存储一些小并且简单数据时,如果使用大型的数据表来存储就显得非常不划算,这样SharedPreferences就有了用武之地 SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现. 实现SharedPreferences存储的步骤如下: 获得SharedPr

Android SharedPreferences存储

一 概念 SharedPreferences存储方式是Android中存储轻量级数据的一种方式.SharedPreferences存储主要用来存储一些简单的配置信息,内部以Map方式进行存储,因此需要使用键值对提交和保存数据,保存的数据以xml格式存放在本地的/data/data/<package name>/shares_prefs文件夹下. 二 特点 1,        使用简单,便于存储轻量级的数据: 2,        只支持Java基本数据类型,不支持自定义数据类型: 3,     

安卓数据持久化:文件存储、SharedPreferences存储以及数据库存储

Android系统中主要提供了三种方式用于简单的实现数据持久化功能: 文件存储(手机自带的内存).SharedPreferences存储以及数据库存储 当然还可以用sd卡存储 读入写出 下面是疯狂java讲义中的关于IO流的一些补充,回忆一下 1,文件存储 手机自带的内存,只能供当前应用程序访问,其他应用程序访问不了,程序卸载这些数据也会随着消失 原理: 基本是先获取一个文件的输出流,然后把信息write进去,最后关闭流 a,通过上下文类context的openFileOutput()方法获得一

SharedPreferences存储和读取数据

除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.实现SharedPreferences存储的步骤如下: 一.根据Context获取SharedPreferences对象 二.利用ed

【Mark】Android应用开发SharedPreferences存储数据的使用方法

Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据. 1.使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences=