Android入门(16)——数据存储之SharedPreferences

原创 2015年07月11日 08:46:58

 

1. Android的四种数据存储方式:


2. SharedPreferences简介:主要存放一些简单的类,int、string,复杂的数据结构就不用这个了。


3. SharedPreferences的使用:


4. 案例一:

 

第一步:在活动文件MainActivity中这样写:然后一定要运行一下程序才行。

package com.example.sharedpreferences;

import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        /*
         * 第一种方法:
         * 生成一个默认的SharedPreferences对象。
         * SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
         * */
        // 第二种方法:生成并直接设置访问权限,第一个参数是文件的名字,第二个参数是文件的权限。例如是否可以被其他程序读取。
        SharedPreferences pref = getSharedPreferences("myPref",MODE_PRIVATE);
        // 获取一个编辑对象editor。
        Editor editor = pref.edit();
        // 写入数据:
        editor.putString("name", "张三");
        editor.putInt("age", 30);
        editor.putLong("time", System.currentTimeMillis());
        editor.putBoolean("default", true);
        // 提交数据:
        editor.commit();
        // 移除default这条数据:每次都要提交的。
        editor.remove("default");
        editor.commit();
        
    }
    
}

 

第二步:在页面中搜索File Expoler,然后在data---data---com.example.sharedpreferences(包名.类名)---shared_prefs---myPref.xml(自己创建的文件名):

然后点击右上角第一个的保存按钮,将该文件保存下来:

然后点击保存下来的myPref.xml就可以看到之前在MainActivity中写入的内容:


第三步:使用保存的内容:

在MainActivity的代码后面再加两句:

// 使用值:getString的第二个参数是没有取到内容时的一个默认值。
        System.out.println(pref.getString("name", ""));
        System.out.println(pref.getInt("age", 0));
然后在LogCat中可以看到:

 

5. 案例二:存取用户名实例:

 

第一步:创建布局文件activity_main:

<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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/userName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/text_username"
        android:layout_toRightOf="@+id/text_username"
        android:ems="10" />

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/userName"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/userName"
        android:ems="10" />

    <CheckBox
        android:id="@+id/checkSaveName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/password"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="14dp"
        android:checked="false"
        android:text="保存用户名" />

    <TextView
        android:id="@+id/text_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/password"
        android:layout_alignBottom="@+id/password"
        android:layout_toLeftOf="@+id/password"
        android:text="密   码:" />

    <TextView
        android:id="@+id/text_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="17dp"
        android:text="用户名:" />

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/checkSaveName"
        android:layout_below="@+id/checkSaveName"
        android:layout_marginTop="16dp"
        android:onClick="doClick"
        android:text="登录" />

    <Button
        android:id="@+id/btnCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/btnLogin"
        android:layout_alignBottom="@+id/btnLogin"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/btnLogin"
        android:onClick="doClick"
        android:text="取消" />

</RelativeLayout>
第二步:修改活动文件MainActivity:

package com.example.sharedpreferences;

import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.Editable;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	EditText etUserName,etUserPass;
	CheckBox chk;
	SharedPreferences pref;
	Editor editor;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 初始化控件:
        etUserName = (EditText) findViewById(R.id.userName);
        etUserPass = (EditText) findViewById(R.id.password);
        chk = (CheckBox) findViewById(R.id.checkSaveName);
        // 生成并直接设置访问权限:
        pref = getSharedPreferences("UerInfo",MODE_PRIVATE);
        // 启用编辑
        editor = pref.edit();
        // 自动显示上一次的用户名:
        String name = pref.getString("username", "");
        if(name == null){
        	chk.setChecked(false);
        }
        else{
        	chk.setChecked(true);
        	etUserName.setText(name);
        }
        
    }
    public void doClick(View v){
    	switch(v.getId()){
    	case R.id.btnLogin:
    		// 获取输入的用户名和密码:
    		String name = etUserName.getText().toString().trim();
    		String pass = etUserPass.getText().toString().trim();
    		// 验证用户名和密码,默认用户名为admin,密码是123456;
    		if("admin".equals(name) && "123456".equals(pass)){
    			Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
    			// 如果记住密码被选中,那么就要把这个用户名存入到editor里面。
    			if(chk.isChecked()){
    				editor.putString("username", name);
    				editor.commit();
    			}
    			else{
    				editor.remove("username");
    				editor.commit();
    			}
    		}
    		else{		// 登录失败
    			Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
    		}
    		break; 
    	default:
    		break;
    	}
    }
    
}
效果图:








版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android入门——数据存储之SharedPreferences详解与应用

SharedPreferences是一个轻量级存储接口,基于键值对(key-value)的方式把数据封装为xml形式,由SharedPreferences实例负责数据的访问和读取,由其内部接口Shar...

Android基础入门教程——6.2 数据存储与访问之——SharedPreferences保存用户偏好参数

Android基础入门教程——6.2 数据存储与访问之——SharedPreferences保存用户偏好参数 本节引言: 1.SharedPreferences使用示例: 2.读取其他应用的Share...

Android入门笔记 - 数据存储 - SharedPreferences

SharedPreferences

android基础入门数据存储之SharedPreferences(14)

一.数据存储之SharedPreferences:       Android提供了SharedPreferences对象来帮助我们保存简单的应用程序数据,例如我们调节应用程序的字体大小,这时我们不...

学徒浅析Android开发:第七讲——数据存储之SharedPreferences

Android提供
  • lz8362
  • lz8362
  • 2014年05月30日 23:27
  • 521

Android学习日记——数据存储5部曲之SharedPreferences

Android进行数据存储主要有5种方式:

Android——SharedPreferences数据存储

Android——SharedPreferences数据存储

Android数据存储之——SharedPreferences

SharedPreferences简介        如果你有少量的键值对信息需要存储,应该使用SharedPreferences API,它可以存储以下数据类型的数据:booleans, float...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android入门(16)——数据存储之SharedPreferences
举报原因:
原因补充:

(最多只允许输入30个字)