除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/< >/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
下面是用SharedPreferences存储数据的一个案例:
点击开启开启WiFi,设置进度条,保存状态,下次打开此程序,将显示上次保存的状态。
核心code如下:
package com.ghsy.demo;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class MainActivity extends Activity {
private CheckBox checkBox;
private SeekBar seekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox=(CheckBox) this.findViewById(R.id.checkBox1);
seekBar=(SeekBar) this.findViewById(R.id.seekBar1);
/*除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件
*存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/< >/sh
*ared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是
*通过Editor对象实现。
*/
//sharedPreferences存储数据的步骤:
//1.根据context获取SharedPreferences对象
final SharedPreferences preferences=MainActivity.this.getSharedPreferences("setting",MODE_PRIVATE );
//点击发生状态改变的时候,调用相应的方法
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//2.通过SharedPreferences获取editor对象(对数据存储修改的对象)
Editor editor=preferences.edit();
//3.通过editor对象存储key-value键值对数据
editor.putBoolean("wifi", isChecked);
//4.通过commit方法提交数据
editor.commit();
}
});
//当点开当前页面的时候,从preferences中获取当前的的wifi开启状态
Boolean boolean1 = preferences.getBoolean("wifi", false);
checkBox.setChecked(boolean1);
//当seekbar在移动的时候对其做一个监听
this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 进度条停止的时候
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 进度条开始移动
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 进度条运动后(在移动)
Editor editor=preferences.edit();
editor.putInt("seek", progress);
editor.commit();
}
});
int progress=preferences.getInt("seek", 0);
this.seekBar.setProgress(progress);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}