
一:当用户点击登录按钮时,如果用户勾选CheckBox密码复选框时,这些用户名与密码都被自动保存起来。
MainActivity的布局文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:background="@drawable/loginbg" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 tools:context=".LoginActivity" > 12 13 <include layout="@layout/login_top"/> 14 15 <include layout="@layout/login_bottom"/>" 16 17 </LinearLayout>
二:当中调用其他两个xml文件,其代码就不显示了。
MainActivity的代码:
1 public class MainActivity extends Activity {
2
3 private EditText uname;
4 private EditText upass;
5 private CheckBox cbkeep;
6 private Button btlogin;
7
8 private SharedPreferences mSpSettings=null;
9 private static final String PREFS_NAME="NamePwd";
10
11 @Override
12 protected void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 requestWindowFeature(Window.FEATURE_NO_TITLE);
15 setContentView(R.layout.activity_main);
16 findView();//得到布局中的控件
17 setListener();//绑定控件事件
18 getData();//获取数据
19 }
20
21 /*绑定控件*/
22 private void findView() {
23 uname=(EditText) findViewById(R.id.etUsername);
24 upass=(EditText) findViewById(R.id.tvPassword);
25 cbkeep=(CheckBox) findViewById(R.id.ckname);
26 btlogin=(Button) findViewById(R.id.btnLogin);
27 }
28
29 /*为控件添加绑定事件*/
30 private void setListener() {
31 btlogin.setOnClickListener(new OnClickListener(){
32
33 @Override
34 public void onClick(View v) {
35 //判断用户名和密码
36 if("admin".equals(uname.getText().toString())&&"admin".equals(upass.getText().toString())){
37 //判断复选框是否选中
38 if(cbkeep.isChecked()){
39 mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
40 //得到Editor对象
41 Editor edit=mSpSettings.edit();
42 //记录保存标记
43 edit.putBoolean("isKeep",true);
44 //记录用户名
45 edit.putString("uname",uname.getText().toString());
46 //记录密码
47 edit.putString("upass",upass.getText().toString());
48 //提交数据
49 edit.commit();
50 }else{
51 mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
52 //得到Editor对象
53 Editor edit=mSpSettings.edit();
54 //记录保存标记
55 edit.putBoolean("isKeep",false);
56 //记录用户名
57 edit.putString("uname","");
58 //记录密码
59 edit.putString("upass","");
60 //提交数据
61 edit.commit();
62 }
63 //跳转到首页
64 Intent intent=new Intent(MainActivity.this,SuccessActivity.class);
65 startActivity(intent);
66 }else{
67 //显示错误提示
68 Toast.makeText(getApplicationContext(), "用户名或密码错误", Toast.LENGTH_SHORT).show();
69 }
70
71 }
72
73
74 });
75 }
76
77 protected void onResume(){
78 //在界面显示数据之前得到之前存储的数据
79 super.onResume();
80 getData();
81 }
82
83 private void getData() {
84 //得到sharedpreferences对象
85 mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
86 //判断是否之前存储过用户名密码
87 if(mSpSettings.getBoolean("idKeep", false)){
88 //如果之前存储过,则显示在相应文本框内
89 uname.setText(mSpSettings.getString("uname", ""));
90 upass.setText(mSpSettings.getString("upass", ""));
91 }else{
92 //否则显示为空
93 uname.setText("");
94 upass.setText("");
95 }
96
97 }
98
99
100
101 }
三:当用户点击登录按钮时,首先判断用户名与密码是否为合法用户,如果是合法用户并且用户勾选了记住密码,则写入用户名密码信息。确定保存这些信息,如用户名密码输入错误,则清空之前记录的用户名密码。然后转到SuccessActivity页面。
SuccessActivity页面的布局文件如下:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/RelativeLayout1" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:background="@drawable/loginbg" 7 android:orientation="vertical" 8 android:paddingBottom="@dimen/activity_vertical_margin" 9 android:paddingLeft="@dimen/activity_horizontal_margin" 10 android:paddingRight="@dimen/activity_horizontal_margin" 11 android:paddingTop="@dimen/activity_vertical_margin" 12 tools:context=".MainActivity" > 13 14 <TextView 15 android:id="@+id/textView1" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:layout_centerInParent="true" 19 android:text="TextView" 20 android:textSize="20sp" /> 21 22 </RelativeLayout>
SuccessActivity的代码:
1 package com.example.minitwittersimulate;
2
3 import android.os.Bundle;
4 import android.app.Activity;
5 public class SuccessActivity extends Activity {
6
7
8 @Override
9 protected void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.activity_success);
12 }
13
14
15
16 }
定义完SuccessActivity后,要在mainfest文件中注册Activity,否则打不开。
添加代码:<activity android:name=".SuccessActivity"></activity>
四:
实际上SharedPreferences中的数据也是以文件的形式存储,只不过Android封装了这些文件的的过程和方式。可以在/data/data/PACKAGE_NAME/shared_prefs目录下查找,其中对应文件是使用xml来进行文件存储的,大致如下:
1 <?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘?> 2 <map> 3 <int name="isKeep" value="true"> 4 <string name="uname" value="zhangsan"> 5 <string name="upass" value="1234"> 6 </map>
原文:http://www.cnblogs.com/swq934063979/p/4614732.html