android SharedPreferences保存数据

在android中保存数据一般有sqlite数据库,文件(File),SharedPreferences常见的就这几种,像什么存储在网络几乎不用,今天就讲讲SharedPreferences怎么保存数据的,SharedPreferences用起来很简单,想当于map集合,以键值对的形式存储在文件中,一般的应用常见:像登陆记住密码的功能,今天就以这个例子来说说SharedPreferences

现在建一个android工程,login,

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >


    <EditText
        android:id="@+id/et_username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="用户名" />
     <EditText
        android:id="@+id/et_pwd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="密码" />
     <RelativeLayout 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
         >
          <Button 
              android:id="@+id/login"
              android:layout_width="90dp"
              android:layout_height="40dp"
              android:text="登陆"
              android:layout_alignParentRight="true"
              />
          <CheckBox
              android:id="@+id/check"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="记住密码"
              android:layout_alignBaseline="@id/login"
              />
     </RelativeLayout>
</LinearLayout>

这是写demo,如果做项目一些字符串肯定是要放在value/string.xml文件中,

当勾选复选框的时候,当退出应用再次进来的时候,用户名和密码就自动显示

MainActivity.java

public class MainActivity extends Activity {
private EditText et_username;
private EditText et_pwd;
private Button   login;
private CheckBox check;
private String username;
private String pwd;
private SharedPreferences sp;
private Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
sp = getSharedPreferences("config", Context.MODE_PRIVATE);
editor = sp.edit();

boolean isSave = sp.getBoolean("isCheck", false);
if(isSave){
et_username.setText(sp.getString("username", ""));
et_pwd.setText(sp.getString("pwd", ""));
check.setChecked(true);
}
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
username = et_username.getText().toString();
pwd = et_pwd.getText().toString();
boolean isCheck = check.isChecked();

editor.putString("username", username);
editor.putString("pwd", pwd);
editor.putBoolean("isCheck", isCheck);
editor.commit();
}
});
}
/**
* 初始化控件
*/
private void initView() {
et_username = (EditText) findViewById(R.id.et_username);
et_pwd = (EditText) findViewById(R.id.et_pwd);
login = (Button) findViewById(R.id.login);
check = (CheckBox) findViewById(R.id.check);

}
}

一般布局文件中控件很多时候,在findViewById的时候最好封装在一个方法中,这样增强易读性,如果是在做实际的项目中,像SharedPreferences最好封装在一个类中,因为做项目肯定不知你一个人使用,还有你的同事,而且封装的类最好用单例模式,不让每次都去创建其对象,因为可能使用的地方比较多,

SharedPreferencesUtil.java封装了SharedPreferences的一些操作,

package com.example.login.util;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;


public class SharedPreferencesUtil {
private static SharedPreferencesUtil instance ;
private static SharedPreferences sp;
private static Editor   editor;
private SharedPreferencesUtil(){

}

public static synchronized SharedPreferencesUtil getInstance(Context context){
if(instance==null){
Log.e("SharedPreferencesUtil","第一次走这里");

instance = new SharedPreferencesUtil();
sp = context.getSharedPreferences("user", Context.MODE_PRIVATE);
editor = sp.edit();
}
Log.e("SharedPreferencesUtil","第二次走这里");
return instance;
}

public static void putString(String key,String value){
editor.putString(key, value);
editor.commit();
}

public static String getString(String key){
return sp.getString(key, "");
}

public static void putBoolean(String key,boolean value){
editor.putBoolean(key, value);
editor.commit();
}

public static boolean getBoolean(String key){
return sp.getBoolean(key, false);
}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值