Android存储方式之SharePreferences

Android存储方式之SharePreferences_第1张图片
如果连代码都写不好,我该用什么来谈诗和远方!

Android中存储方式有很多种,下面我给分享自己的学习总结,有错误希望大家指出,让我们一起成长:

1、使用SharedPreferences存储数据

SharedPregferences是用于存储简单的数据类型,一般用来存储应用的各种配置信息(例如:是否开启音效,是否开启震动功能等),一些简单应用密码等等。使用SharedPreferences保存的文件在/data/data/<应用包名>/shared_prefs目录下,使用Eclipse或者AS可以使用DDMS下面看该目录下文件。可以通过2种方式生成SharePregferences对象:

a、在Fragment中使用SharePreferences

SharedPreferences sp=getActivity().getSharePreferences(name,Context.MODE_PRIVATE);

SharedPreferences.Editor editor=sp.edit();

b、在Activity中使用SharePreferences

SharePreferences sp=getPreferences(Context.MODE_PRIVATE);

SharedPreferences.Editor editor=sp.edit();

这2种方式,我希望大家可以试试,第二种方式我也是在官网上看到的,一开始一直都是使用的第一种方式,强烈建议大家使用第二种方式试试,因为在这种没有给出需要操作的xml文件name的时候,系统会自动生成一个xml?还是什么情况,在这里我就不给出大家答案,希望大家都动手做做,毕竟凭YY的话,我也能变成刘德华。

使用getSharePreferences(String name,int mode),第一个参数为你要对应操作的xml文件,第二参数为该xml文件的读取模式,有三种:

Context.MODE_PRIVATE:指定该SharePreferences数据只能被本应用读、写;

Context.MODE_WORLD_READABLE:指定该SharePreferences数据可以被其他应用读,但不能写。

Context.MODE_WORLD_WRITEABLE:指定该SharePreferences数据可以被其他应用读、写。

Editor的几个方法:

SharedPreferences.Editor clear():清空SharedPreferences里所有数据

SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据

SharedPreferences.Editor remove():删除SharedPreferences中指定key对应的数据项

boolean commit():当Editor编辑完成后,使用该方法提交修改

下面给出一个栗子:

先看布局,布局代码过于简单就不给出来了:


Android存储方式之SharePreferences_第2张图片
第一个BT是用于写入数据,第二个BT是用于存储数据,第三个则是测试getPerfrences(int mode)

源码:

privateTextViewtextView;

privateButtongetKeyWorld;

privateButtonsetKeyWorld;

privateEditTexteditText;

privateButtontest;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

}

private voidinitViews() {

textView= (TextView) findViewById(R.id.textView);

getKeyWorld= (Button) findViewById(R.id.get_keyword);

setKeyWorld= (Button) findViewById(R.id.set_keyword);

editText= (EditText) findViewById(R.id.keyword);

test= (Button) findViewById(R.id.test);

getKeyWorld.setOnClickListener(this);

setKeyWorld.setOnClickListener(this);

test.setOnClickListener(this);

}

@Override

public voidonClick(View v) {

switch(v.getId()){

caseR.id.set_keyword:

String code=editText.getText().toString().trim();

//创建SharePreferences.Editor接口对象,“mx”表示要写入xml文件名,

SharedPreferences.Editor editor=getSharedPreferences("mx",MODE_ENABLE_WRITE_AHEAD_LOGGING).edit();

//将获过来的值以键值对的方式放入到文件中

editor.putString("code",code);

editor.commit();

Toast.makeText(this,"文件存储成功!",Toast.LENGTH_SHORT).show();

editor.clear();

break;

caseR.id.get_keyword:

//创建一个SharePreferences接口的对象,

SharedPreferences read=getSharedPreferences("mx",MODE_ENABLE_WRITE_AHEAD_LOGGING);

//根据键获取文件中的值

String value=read.getString("code","");

Toast.makeText(this,"密码为:"+value,Toast.LENGTH_SHORT).show();

break;

caseR.id.test:

SharedPreferences sp=getPreferences(MODE_PRIVATE);

SharedPreferences.Editor editor1=sp.edit();

editor1.putString("test","value");

editor1.commit();

editor1.clear();

Log.i("xyz","..."+sp.getString("test","default"));

Toast.makeText(MainActivity.this,"请看Log!",Toast.LENGTH_SHORT).show();

break;

 }

}

还是说一下getPreferences(int mode)方法操作的xml吧。。。真是惆怅!


Android存储方式之SharePreferences_第3张图片
在SharePreferences操作的xml情况下,系统默认会更具该Activity的命名创建一个xml文件。

你可能感兴趣的:(Android存储方式之SharePreferences)