Android sharedPreferences 用法

    Android 提供了一种数据轻量级的数据持久化方法。使用SharedPreferences 接口 将 key-value 形式的primitive data 存储到文件中。多用于保存软件偏好配置信息。

    注意的几点:

        1.存储内容:primitive data。(booleans, floats, ints, longs, and strings.)

        2. 存储形式:key-value 键值对,存储到xml文件中。

使用的方法:

    getSharedPreferences(String name, int mode)【或者 getPreferences()】 获得 SharedPreferences 对象。

    读操作:

         通过 SharedPreferences 对象 直接调用 getBoolean getInt 等等方法获取 。

    写操作:

    通过 SharedPreferences 获取 Editor 对象 ,适应Editor对象调用 putBoolean 等方法写文件。

 

SharedPreferences 的文件存储地址:/data/data/<packagename>/shared_prefs 目录下

 

实例:  用户登录界面的记住密码功能

    

public class MainActivity extends Activity {
	EditText user_name, pass_word;
	CheckBox rememberCheck;
	Button btnlogin;

	// SharedPreferences setting;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		user_name = (EditText) findViewById(R.id.etusername);
		pass_word = (EditText) findViewById(R.id.etpassword);
		rememberCheck = (CheckBox) findViewById(R.id.checkBox1);
		btnlogin = (Button) findViewById(R.id.btnlogin);

		// 读取sharedpreference中的值
		SharedPreferences sharepre = getSharedPreferences("data", MODE_PRIVATE); // 如果 data 文件不存在,创建一个
		//String isCheckedStr = sharepre.getString("isChecked", "");
		boolean isChecked = sharepre.getBoolean("isChecked", false);  // 带默认值的
		if(isChecked){
			String username = sharepre.getString("username","");			
			String password = sharepre.getString("password", "");
			user_name.setText(username);
			pass_word.setText(password);
			rememberCheck.setChecked(true);
		}
		// 登录事件响应
		btnlogin.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				SharedPreferences.Editor editor = getSharedPreferences(
						"data", MODE_PRIVATE).edit();
				if (rememberCheck.isChecked()) {
					// 保存值到 sharedPreferences
					editor.putBoolean("isChecked", true);
					editor.putString("username", user_name.getText().toString());
					editor.putString("password", pass_word.getText().toString());
					
				}else{
					
					editor.clear();
					
				}
				editor.commit();
				
				Intent i = new Intent(MainActivity.this,SettingActivity.class);				
				startActivity(i);
			}		
		});

	}

 在 DDMS 的file explorer 中可以找到生成的 xml 文件:

 

 

posted @ 2016-10-05 17:02  googlg  阅读(1733)  评论(0编辑  收藏  举报