从零開始学android<数据存储(1)SharedPreferences属性文件.三十五.>
在android中有五种保存数据的方法,各自是:
Store data on the web with your own network server.网络存储
今天这一节我们一起来学习Shared Preferences 属性文件存储的方式来存储简单的数据
我们能够使用Shared Preferences 来存储 booleans, floats, ints, longs, and strings型的简单数据并以键值对的形式保存为xml文件。
为了实例化Shared Preferences 我们能够使用
getSharedPreferences()和getPreferences() 这两个方法
第一个方法须要传入一个文件名称和存储的模式
另外一种方法默觉得仅仅有一个属性文件。仅仅须要传入一个存储模式即可了
存储模式 :
MODE_PRIVATE仅本应用可用
MODE_APPEND可追加
 MODE_WORLD_READABLE,可被其它应用读
MODE_WORLD_WRITEABLE.可被其它应用写
详细操作见代码凝视
xml文件
<RelativeLayout xmlns: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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="89dp"
        android:text="存储信息" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="36dp"
        android:text="读取信息" />
</RelativeLayout>
JAVA文件
package com.example.sharedpreferences;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
	private SharedPreferences sharedPreferences;
	private Button saveData, getDate;
	public static final String FILENAME = "flyou";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		sharedPreferences = getSharedPreferences(FILENAME, MODE_PRIVATE);
		saveData = (Button) this.findViewById(R.id.button1);
		getDate = (Button) this.findViewById(R.id.button2);
		saveData.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				SharedPreferences.Editor editor = sharedPreferences.edit();
				editor.putString("username", "jay");
				editor.putString("password", "553274238");
				Boolean flag = editor.commit();
				Toast.makeText(MainActivity.this, "运行完毕,运行结果:-->" + flag, 2)
						.show();
			}
		});
		getDate.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String username = sharedPreferences.getString("username",
						"未找到匹配信息");
				String password = sharedPreferences.getString("password",
						"未找到用户密码");
				Toast.makeText(MainActivity.this,
						"用户名:——>" + username + ",密码:——>" + password, 2).show();
			}
		});
	}
}
接下来使用改方法来实现本地记住账号和password的功能
里面可能会涉及到一些没有讲到的知识,大家能够先了解下,也对前面学过的其它组件进行一下回想
xml文件
主界面
<RelativeLayout xmlns: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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".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:layout_marginLeft="19dp"
        android:layout_marginTop="42dp"
        android:text="username" />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="58dp"
        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_marginLeft="40dp"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10" >
        <requestFocus />
    </EditText>
    <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" />
    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignRight="@+id/editText2"
        android:text="记住password" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignParentLeft="true"
        android:text="注冊账号" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/checkBox1"
        android:text="登录" />
</RelativeLayout>
登录后界面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout>
JAVA文件
package com.example.sharepreferencesdemo;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class MainActivity extends Activity {
	private SharedPreferences sharedPreferences;
	private Button login;
	private CheckBox checkBox;
	private EditText username, password;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		login = (Button) this.findViewById(R.id.button1);
		checkBox = (CheckBox) this.findViewById(R.id.checkBox1);
		username = (EditText) this.findViewById(R.id.editText1);
		password = (EditText) this.findViewById(R.id.editText2);
		sharedPreferences = getPreferences(MODE_PRIVATE);// 通过getPreferences实例化sharedPreferences对象
		String usernameString = sharedPreferences.getString("username", "");// 读取用户名
		username.setText(usernameString);// 为编辑框设置内容
		// 获取复选框的选中状态,假设选中的话就 进行记住密码的操作
		if (sharedPreferences.getBoolean("checked", false)) {
			// 获取密码
			String passwordString = sharedPreferences.getString("password", "");
			// 设置编辑框信息
			password.setText(passwordString);
		}
		login.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				// 通过edit 方法实例化Editor对象,储存信息
				SharedPreferences.Editor editor = sharedPreferences.edit();
				// 以键值对的形式储存信息
				editor.putString("username", username.getText().toString());
				editor.putString("password", password.getText().toString());
				// 推断复选框的选中状态并进行存储
				if (checkBox.isChecked()) {
					editor.putBoolean("checked", true);
				} else {
					editor.putBoolean("checked", false);
				}
				// 运行储存操作
				editor.commit();
				// 设置进度对话框
				final ProgressDialog dialog = new ProgressDialog(
						MainActivity.this);
				// 设置标题
				dialog.setTitle("用户登录");
				// 设置提示信息
				dialog.setMessage("正在登录。请稍后……");
				// 開始进度对话框
				dialog.onStart();
				// 延时线程操作
				new Thread() {
					@Override
					public void run() {
						// TODO Auto-generated method stub
						try {
							// 休眠3秒
							Thread.sleep(3 * 1000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} finally {
							// 对话框消失
							dialog.dismiss();
							// 设置意图转跳
							Intent intent = new Intent(MainActivity.this,
									main.class);
							// 传递意图信息
							intent.putExtra("username", username.getText()
									.toString());
							// 開始activity转跳
							startActivity(intent);
							MainActivity.this.finish();
						}
					}
				}.start();// 開始线程操作
				// 显示对话框
				dialog.show();
			}
		});
	}
}
登陆后的界面
package com.example.sharepreferencesdemo;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;
public class main extends Activity {
	private TextView text;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.linearlayout);
		text=(TextView)this.findViewById(R.id.textView3);
		Intent intent=getIntent();
		text.setTextSize(15);
		text.setGravity(Gravity.CENTER_HORIZONTAL);
		text.setTextColor(Color.CYAN);
		text.setText("欢迎: "+intent.getStringExtra("username"));
	}
}
未点击记住password,第二次登录。
点击记住password登录
点击记住password后,第三次登录
介绍了SharedPreferences属性文件的存储,我们能够进行较小数据的高速存储与便捷读取
下节预报:Internal Storage内部存储器
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号