这里只是简单的使用了sharedPreferences,但实际要用使用记住密码这个功能要把密码加密
activity_main.xml
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="username"
android:id="@+id/username"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="password"
android:id="@+id/password"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:id="@+id/login"/>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/remeber"/>
</LinearLayout>
</LinearLayout>
MainActivity.java
//全局变量
CheckBox remeber;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
EditText username ;
EditText password ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
editor = sharedPreferences.edit();
username = (EditText) MainActivity.this.findViewById(R.id.username);
password = (EditText) MainActivity.this.findViewById(R.id.password);
remeber = (CheckBox) this.findViewById(R.id.remeber);
if(sharedPreferences.getBoolean("isRemeber", false)){
remeber.setChecked(true);
username.setText(sharedPreferences.getString("username","error"));
password.setText(sharedPreferences.getString("password","error"));
}
Button btn_login = (Button) this.findViewById(R.id.login);
btn_login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String userNmae = username.getText().toString();
String passWord = password.getText().toString();
if (userNmae.equals("123") && passWord.equals("123")) {
if (remeber.isChecked()) {
editor.putBoolean("isRemeber", true);
editor.putString("username", userNmae);
editor.putString("password", passWord);
} else {
editor.clear();
}
editor.commit();
Toast.makeText(MainActivity.this,"登入成功",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this,"登入失败",Toast.LENGTH_SHORT).show();
}
}
});
}
2016/05/30 更新
SharedPreferences工具类
1.存储:SharedpreferencesUtil.putParams(this, “name”, “1111”);
2.拿值:SharedpreferencesUtil.getParams(this, “name”);
package com.example.learing;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
/**
*
* @author yj
* Sharedpreferences 工具类
* 单例模式
* Sharedpreferences 不适用多线程场景
*/
public class SharedpreferencesUtil {
public static SharedPreferences sharedPreferences;
public static Editor editor;
private static String fileName = "user";
private SharedpreferencesUtil() {}
/**
* 存储
* @param context
* @param key
* @param value
* @return
*/
public static boolean putParams(Context context, String key, String value) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(fileName, context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
editor.putString(key, value);
return editor.commit();
}
/**
* 拿数据
* @param context
* @param key
* @return
*/
public static String getParams(Context context, String key) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(fileName, context.MODE_PRIVATE);
}
return sharedPreferences.getString(key, "没有数据!");
}
}
2016/06/01更新
// 使用application的context,在application类设置一次就行了
SharedpreferencesUtil.setContext(getApplicationContext());
SharedpreferencesUtil.putParams("123", "123");
SharedpreferencesUtil.getParams("123");
package com.example.learing;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
/**
*
* @author yj
* Sharedpreferences 工具类
* 单例模式
* Sharedpreferences 不适用多线程场景
* 原则:使用起来简单,尽量少的代码和一个类不依赖别的类
* 注意推荐 :在application里设置context
*/
public class SharedpreferencesUtil {
public static SharedPreferences sharedPreferences;
public static Editor editor;
private static String fileName = "user";
private static Context mContext;
private SharedpreferencesUtil() {}
/**
* 设置context 一般使用application的context
* 不设置context将无法使用
* @param context
*/
public static void setContext(Context context) {
mContext = context;
}
/**
* 存储
* @param context
* @param key
* @param value
* @return
*/
public static boolean putParams(String key, String value) {
if(!checkContext()) {
return false;
}
if (sharedPreferences == null) {
sharedPreferences = mContext.getSharedPreferences(fileName, mContext.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
editor.putString(key, value);
return editor.commit();
}
/**
* 拿数据
* @param context
* @param key
* @return
*/
public static String getParams(String key) {
if(!checkContext()) {
return "没有context!不能获取值";
}
if (sharedPreferences == null) {
sharedPreferences = mContext.getSharedPreferences(fileName, mContext.MODE_PRIVATE);
}
return sharedPreferences.getString(key, "没有数据!");
}
/**
* 检查context是否为null
* 如果没有context == null,手动抛出一个异常中断程序。
* @return
*/
private static boolean checkContext() {
if (mContext == null) {
Log.v("TAG", "在SharedpreferencesUtil没有设置context");
throw new RuntimeException("在SharedpreferencesUtil没有设置context");
} else {
return true;
}
}
}