- SharedPreferences概述:
SharedPreferences是android提供的、基于xml文件的一种用于保存简单数据的数据存储机制
二、使用步骤:
- 取得SharedPreferences对象
SharedPreferences pref = getSharedPreferences("userinfo", MODE_PRIVATE);
|
参数说明:
第一个参数为生成的用于存储数据的xml文件的名称;
第二个参数为该文件的存储权限;
SharedPreferences生成的xml文件的存储权限分为以下几种:
- Activity.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND
- Activity.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
- Activity.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入;
- Activity.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
//如果希望文件被其他应用读和写,可以传入:
Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE
- 取得编辑对象Editor
Editor editor = pref.edit();
|
- 存入数据
- 提交
- 取数据
下面看简单使用示例:
1、xml文件
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.sharedpreferencedemo.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="用户名:"/>
<EditText
android:id="@+id/et_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="15dp"
android:inputType="text"
android:layout_toRightOf="@+id/textView1"
android:ems="10" >
<requestFocus/>
</EditText>
<EditText
android:id="@+id/et_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/et_user_name"
android:layout_alignParentRight="true"
android:ems="10"
android:inputType="text" />
<Button
android:id="@+id/button2"
android:onClick="doClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_centerHorizontal="true"
android:text="取消"/>
<CheckBox
android:id="@+id/is_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button2"
android:layout_below="@+id/et_password"
android:text="保存用户名"/>
<Button
android:id="@+id/button1"
android:onClick="doClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/et_password"
android:layout_below="@+id/is_check"
android:text="登录"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView1"
android:layout_below="@+id/et_user_name"
android:layout_marginTop="24dp"
android:text="密码:"/>
</RelativeLayout>
|
界面大体样子如下:
下面是主activity程序:
package com.example.sharedpreferencedemo;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText etUserName,etPassword;
CheckBox chk;
Button login,cancel;
SharedPreferences pref;
Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etUserName = (EditText)findViewById(R.id.et_user_name);
etPassword = (EditText)findViewById(R.id.et_password);
chk = (CheckBox)findViewById(R.id.is_check);
login = (Button)findViewById(R.id.button1);
cancel = (Button)findViewById(R.id.button2);
pref = getSharedPreferences("userinfo", MODE_PRIVATE);
editor = pref.edit();
if (pref.getBoolean("isSave", false)) {
etUserName.setText(pref.getString("userName", ""));
chk.setChecked(true);
}else {
chk.setChecked(false);
}
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String name = etUserName.getText().toString().trim();
String pass = etPassword.getText().toString().trim();
if (name.equals("admin")&&pass.equals("123456")) {
if (chk.isChecked()) {
editor.putString("userName", name);
editor.putBoolean("isSave", chk.isChecked());
editor.commit();
}else{
editor.clear();
editor.remove("userName");
editor.remove("isSave");
editor.commit();
}
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
});
}
}
|
此程序代码比较丑,代码也没什么条理性,但是仅供参考以及个人笔记回顾所用;
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。