sharedpreferences保存用户设置

刚开始做安卓,经常看一些视频书籍什么的,但是看完是没有什么印象的,写这篇博客以来是为了自己能记住,另外就是如果有想学的或者也是刚做没多久的朋友可以看一下

sharedpreferences在安卓app中大多是为了来保存用户设置的,一般以键值对的方式来保存。

既然说到了键值对,第一,你的键和值要匹配这个不要写错了,第二就是咱们怎样放进去,然后拿出来。

1/先说保存,记住三部通过edit()获取一个Sharedpreferences的Editor对象,然后通过put方法将你的值保存或者覆盖到文件中,最后,千万别忘记通过commit来提交,不提交是不会保存的!

多的不说,边看代码边理解吧:先说怎么通过sharedprefences来保存(假设点击bt_start按钮来开始)

bt_start.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				SharedPreferences sp = getSharedPreferences("shezhi",MODE_PRIVATE);
				Editor editor = sp.edit();
				editor.putString("music", "bigMisic");
				editor.putBoolean("bgMusic", true);
				editor.commit();
				
			}
		});
通过这样的方式我们就把我们的设置music和bgMusic他们的值就保存下来了,如果你想看是不是保存了,或者保存到哪里了,ok打开你的DDMS,在File Explorer下——>data——>data——>找到你这个的包名,里面有个文件夹是shared_prefs,里面那个文件的名字就是我们getSharedPreferences中的第一个参数shezhi。你可以把这个文件导出,打开来看:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="music">bigMisic</string>
    <boolean name="bgMusic" value="true" />
</map>
也就是说我们的设置内容已经保存下来了,其中getSharedFreferences()方法中第二个参数,自己可以把鼠标放到这个方法上看里面的参数是什么意思,MODE_PRIVATE和0是一个意思  就是私有的,只供我们自己来读写。这样的话我们设置完保存就会了,那等我们重新打开这个app或者说我们重新开机之后这个设置还是我们保存的那一个吗,我可以确定的说,是的,但是我们还需要再打开的时候读取一下我们的设置!


2/读取我们的设置

这里我假设bt_stop来读取我们的设置,当然我们在写app的时候,这个读取是我们特别要注意的地方,可能说我们刚打开这个app的时候就有相关设置比方说声音,假设加载前的界面有音乐,使用过程中有音乐,当然设置里面还有音乐的相关设置,这些个地方都是要进行读取的,并不是说我们打开相关设置里面才会有,现在的app在安卓方面已经做得很成熟了,(其实我都感觉熟透了--.)所以说,在你们的生命周期内,像activity中可能有,我们的服务,你的声音service中,可能都会有,一定要考虑全面,这也是我们做程序员的逻辑思维一定要清晰。

bt_stop.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				SharedPreferences sp1 = getSharedPreferences("shezhi", 0);
				String music = sp1.getString("music", "默认值");
				boolean bgMusic = sp1.getBoolean("bgMusic", true);
				tv.setText("设置的值是:"+music+","+bgMusic);
			}
		});
这里你不用管sp还是sp1 sp2 的   只要你的key是对的是shezhi就行,后面那个0意思和private一样私有的意思,类型看清然后选择get方法,其中get方法中是有两个参数的,第一个是Key我们都知道  那第二个呢,就不是设置了,是你在没有保存过设置的情况下的一个默认值。这样的话我们在做一个有设置的app的时候,或者需要保存键值对这种形式的时候,就能用到sharedpreferences了,其中还有一点!使用这个只能保存一些基本类型的参数,像string ,boolean ,int ,char之类的。


这样以后再做app时视情况而定是需要在哪保存,在那些地方需要打开这些设置,只要做全面了这些,相信就没有问题了。



发布了6 篇原创文章 · 获赞 1 · 访问量 4922
展开阅读全文

怎么只写一个SharedPreferences让它保存多个数据,而不用像下面代码一样写多个SharedPreferences保存数据

01-30

package com.myedit; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; import android.view.View.*; import android.content.*; public class MainActivity extends Activity { private SharedPreferences sp,spa,spb; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText a1=(EditText)findViewById(R.id.a1); final EditText a2=(EditText)findViewById(R.id.a2); final EditText a3=(EditText)findViewById(R.id.a3); Button a4=(Button)findViewById(R.id.a4); final TextView a5=(TextView)findViewById(R.id.a5); final TextView a6=(TextView)findViewById(R.id.a6); final TextView a7=(TextView)findViewById(R.id.a7); //保存内容 sp=getSharedPreferences("ba",MODE_PRIVATE); spa=getSharedPreferences("bb",MODE_PRIVATE); spb=getSharedPreferences("bc",MODE_PRIVATE); String str=sp.getString("name",""); String s=spa.getString("name",""); String st=spb.getString("name",""); a5.setText(str); a6.setText(s); a7.setText(st); a4.setOnClickListener(new OnClickListener(){ @Override public void onClick(View p1) { // TODO: Implement this method a5.setText(a1.getText().toString()); a6.setText(a2.getText().toString()); a7.setText(a3.getText().toString()); //读取保存内容 sp.edit().putString("name",a5.getText().toString()).commit(); spa.edit().putString("name",a6.getText().toString()).commit(); spb.edit().putString("name",a7.getText().toString()).commit(); } }); } } ![图片](https://img-ask.csdn.net/upload/201601/31/1454195504_381530.png)![图片](https://img-ask.csdn.net/upload/201601/31/1454195543_814123.png)![图片](https://img-ask.csdn.net/upload/201601/31/1454195560_10566.png)![图片](https://img-ask.csdn.net/upload/201601/31/1454195603_566737.png) 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览