Android数据存储方式(二)

                         

                  Android数据存储方式(二.1)SharedPreferences

明天就放假了,厦门明天说好的天风要来啊。下午学习一下SharedPreferences
步骤:
(1)建立一个工程SharedPreferences
(2)编写布局activity.xml
(3)编写MainActivity.java

文件activity.xml
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    tools:context="com.ohm.sharedpreferencestest.MainActivity"
    tools:ignore="MergeRootFrame" >
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        
        android:orientation="horizontal">
        
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名:"/>
        <EditText
            android:id="@+id/login_user_et"
            android:layout_width="150dip"
            android:layout_height="wrap_content"
            android:digits="abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
    </LinearLayout>
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:orientation="horizontal">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密   码:"/>
        <EditText 
            android:id="@+id/login_pswd_et"
            android:layout_width="150dip"
            android:layout_height="wrap_content"
            android:password="true"/>
    </LinearLayout>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="记住密码:"/>
        <CheckBox 
            android:id="@+id/login_checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <Button 
        android:id="@+id/login_btn"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:text="登录"/>
    
    
</LinearLayout>


MainActivity.java

package com.ohm.sharedpreferencestest;
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
/*
 *  使用SharedPreferences保存key-value对的步骤如下:
  (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
  (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
  (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
  (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作
 * 
 * */


public class MainActivity extends ActionBarActivity {


public static final String PREFS_NAME = "prefsname";
public static final String REMEMBER_USERID_KEY = "remember";
public static final String USERID_KEY = "userid";
private static final String DEFAULT_USERNAME = "Hades";

public static final String PASSID_KEY = "passid";
private static final String DEFAULT_PASSWORD = "123";
//组件
private EditText userName = null;
private EditText passWord = null;
private CheckBox cb = null;
private SharedPreferences mSettings = null;
private Button submitBtn = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        userName = (EditText) findViewById(R.id.login_user_et);
        passWord = (EditText) findViewById(R.id.login_pswd_et);
        cb= (CheckBox) findViewById(R.id.login_checkbox);
        submitBtn = (Button) findViewById(R.id.login_btn);
        //使用getSharedPreferences()方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定
        mSettings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);//模式为私有
     
       // cb.setChecked(getRemember());
        cb.setChecked(false);//代替上面的函数调用,初始化时设定为“不记住密码”
        userName.setText(getUserName());
        //userName.setText("xuxin");//如果用这个替换掉,导致后面的名字保存不了
        passWord.setText(getPassWord());
   
        submitBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

if (cb.isChecked()) { 
                   saveRemember(true); 
                   saveUserName(userName.getText().toString()); 
                   savePassWord(passWord.getText().toString());
               
               } else { 
                   saveRemember(false); 
                   saveUserName(""); 
                   savePassWord("");
               } 
}


});
    }
  
protected void savePassWord(String passid) {
Editor editor = mSettings.edit();
   editor.putString(PASSID_KEY, passid); 
   editor.commit(); 

}


// 保存用户名 
    private void saveUserName(String userid) { 
        Editor editor = mSettings.edit();// 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
        editor.putString(USERID_KEY, userid); 
        //通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
        editor.commit(); //保存数据 
       // 通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作
        //editor.clear();//清除数据 
    } 
 
    // 设置是否保存的用户名 
    private void saveRemember(boolean remember) { 
        Editor editor = mSettings.edit();//使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
        editor.putBoolean(REMEMBER_USERID_KEY, remember); 
        editor.commit();
        }


private String  getUserName() {
// TODO Auto-generated method stub
return mSettings.getString(USERID_KEY, DEFAULT_USERNAME); 
}


private String getPassWord() {
// TODO Auto-generated method stub
return mSettings.getString(PASSID_KEY, DEFAULT_PASSWORD);
}


/*
private boolean getRemember() {
// TODO Auto-generated method stub
return mSettings.getBoolean(REMEMBER_USERID_KEY, false); //初始化时设定为“不记住密码”
}*/


}
将以上代码替换掉你自己的代码,点击登录后运行Run,结果如图,填写信息后退出,再次进入会发现已经保存了之前的用户名和密码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值