SharedPreferences保存的数据主要类似于配置信息格式的数据,因此它保存的数据主要是简单的key-value对。
SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下方法来访问SharedPreferences中的key-value对。
1.boolean contains(String key):判断SharedPreferences是否包含特定key的数据。
2.abstract Map<String,?> getAll():获取SharedPreferences数据里全部的key-value对。
3.boolean getXxx(String key,xxx defValue):获取SharedPreferences数据里指定key对应的value。如果该key不存在,返回默认
值defValue。其中xxx可以使 boolean、float、int、long、String等各种基本类型的值。 SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了方法来向SharedPreferences写入数据:
1.SharedPreferences.Editor clear():清空SharePreferences里所以的数据。
2.SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences存入指定key对应的数据。其中xxx可以是
boolean、float、int、long、String等各种基本类型的值。
3.SharedPreferences.Editor remove(String key):删除SharedPreferences里面指定key对应的数据项。
4.boolean commit():当Editor编辑完成后,调用该方法提交修改。 SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context的getSharedPreferences(String
name,int mode)方法获取SharedPreferences实例,该方法的第二个参数支持如下几个值:
1.Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写。
2.Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他程序读,但不能写。
3.Context.MODE_WORLD_WRITADLE:指定该SharedPreferences数据能被其他程序读、写。
public class SharedPerferences extends BaseActivity implements OnClickListener {
private EditText et_nameEditText;
private EditText et_password;
private CheckBox cb_true;
private Button btn_login;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. sharedpreferences);
//输入用户名
et_nameEditText = (EditText) findViewById(R.id.et_name );
//输入密码
et_password = (EditText) findViewById(R.id.et_password );
//是否记住密码选框
cb_true = (CheckBox) findViewById(R.id. cb_true);
//登录按钮
btn_login = (Button) findViewById(R.id.btn_login );
btn_login.setOnClickListener( this);
//得到SharedPreferences对象利用其获取存储的数据
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
//获取到数据就会给isRemember附上保存的只,否则则会取默认值false
boolean isRemember=sharedPreferences.getBoolean("isremeber" ,false);
if(isRemember){
et_nameEditText.setText( sharedPreferences.getString( "name", ""));
et_password.setText( sharedPreferences.getString( "password", ""));
cb_true.setChecked( true);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id. btn_login:
String name=et_nameEditText.getText().toString().trim();
String password=et_password.getText().toString().trim();
if(name.equals( "admin")&& password.equals("123456" )){
//利用SharedPreferences对象edit()方法的到SharedPreference.edit对象用来保存数据
editor = sharedPreferences.edit();
if( cb_true.isChecked()){
editor.putBoolean( "isremeber",true );
editor.putString( "name",name);
editor.putString( "password",password);
} else {
editor.clear();//清空数据
}
editor.commit();//提交保存
Intent intent= new Intent(getApplicationContext(), ViewPager1.class );
startActivity(intent);
finish();
} else {
Toast. makeText(getApplicationContext(),"用户名密码不匹配", Toast.LENGTH_SHORT ).show();
}
break;
}
}
}
初来乍到,笔记有什么问题可以提出来,谢谢