您的位置:首页 > Web前端

安卓开发_数据存储技术_SharedPreferences类

2014-08-23 14:31 567 查看
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。

该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。

有两种方式可以获得SharedPreferences对象

1、getSharedPreferences(): 如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称。

                对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象

2、getPreferences(): 如果activity仅需要一个共享文件,则可以使用该方法。因为只有一个共享文件,它并不需要提供名称。

向SharedPreferences类中增加值的方法如下

1、调用SharedPreferences类的edit()方法获得SharedPreferences对象

2、调用诸如putString(),putInt()等方法增加相应类型的值

3、使用commit()方法提交新的值

从SharedPreferences类中读取值时,主要使用该类中定义的getXXX()方法。

下面用一个简单的例子来练习SharedPreferences类的使用

首先看布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="66dp"
android:layout_marginTop="64dp"
android:text="用户名:" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="32dp"
android:text="密码:" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_toRightOf="@+id/textView1"
android:ems="10" />

<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/editText1"
android:ems="10"
android:inputType="textPassword" >

<requestFocus />
</EditText>

<Button
android:id="@+id/btn_load"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:layout_marginTop="29dp"
android:text="登录" />

</RelativeLayout>


View Code
一个简单的登录界面。

再看JAVA文件

package data;

import com.example.allcode.R;

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.EditText;
import android.widget.Toast;

public class Sharedpreference_use extends Activity{
private EditText name;
private EditText password;
private Button load;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.data_sharedpreferences);

name = (EditText) findViewById(R.id.editText1);
password = (EditText) findViewById(R.id.editText2);
load = (Button) findViewById(R.id.btn_load);

//登录按钮,将用户名和密码存到SharedPreferences对象中存储数据
//通过toast显示存储的用户名和密码
load.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String str_name = name.getText().toString();          //获取用户名编辑框的数据
String str_password = password.getText().toString();  //获取密码框中的数据

//获得私有类型的SharedPreferences

SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
Editor editor = sp.edit();  //获取Editor对象
editor.putString("username", str_name);     //添加用户名
editor.putString("uesrpassword", str_password);   //添加密码
editor.commit(); //提交数据

//如果在另一个activity中获取SharedPreferences存储的数据 ,要加上下面这行代码,在同一activity种则不需要
//SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
String get_name = sp.getString("username","0");
String get_password = sp.getString("uesrpassword","1");
Toast.makeText(Sharedpreference_use.this, "通过SharedPreferences存储的用户名为:"+get_name+"密码为:"+get_password, 1).show();
//将获取的用户名和密码的数据通过toast显示出来
}
});

}

}


效果图:



SharedPreferences类存储的数据放在shared_prefs文件夹中



data/data/包名 找到你的包名 里面有个shared_prefs文件,保存的文件data.xml就是 SharedPreferences类类保存的数据

该数据是以Map键值对的形式存放在xml文件中的



-------------------------------------------------------------------

相关知识:

安卓开发_数据存储技术_内部存储
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: