码迷,mamicode.com
首页 > 其他好文 > 详细

SharedPreferences存储获取信息例子

时间:2014-07-30 14:45:23      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   java   使用   os   

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>            



主界面如下:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

SharedPreferences存储获取信息例子,布布扣,bubuko.com

SharedPreferences存储获取信息例子

标签:android   style   blog   http   color   java   使用   os   

原文地址:http://blog.csdn.net/liaction/article/details/38299233

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!