Android数据存储之SharedPreferences的简单使用(保存用户名和密码)




  1. SharedPreferences概述:

SharedPreferencesandroid提供的、基于xml文件的一种用于保存简单数据的数据存储机制

 

二、使用步骤:

  1. 取得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 

  1. 取得编辑对象Editor

Editor editor = pref.edit();

  1. 存入数据

editor.putXXX();

  1. 提交

editor.commit();

 

  1. 取数据

pref.getXXX();

 

下面看简单使用示例:

1xml文件

<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="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();

                                     }

                                    

                            }

                   });

         }

        

}

此程序代码比较丑,代码也没什么条理性,但是仅供参考以及个人笔记回顾所用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值