首先是配置文件:

  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:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity"
  10. android:orientation="vertical"
  11. >
  12.  
  13. <EditText
  14. android:id="@+id/et_name"
  15. android:layout_width="match_parent"
  16. android:layout_height="wrap_content"
  17. android:hint="请输入用户名"
  18. />
  19. <EditText
  20. android:id="@+id/et_pass"
  21. android:layout_width="match_parent"
  22. android:layout_height="wrap_content"
  23. android:inputType="textPassword"
  24. android:hint="请输入密码"
  25. />
  26. <RelativeLayout
  27. android:layout_width="match_parent"
  28. android:layout_height="wrap_content"
  29. android:orientation="horizontal"
  30. >
  31. <CheckBox
  32. android:id="@+id/cb"
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:text="记住用户名和密码"
  36. android:layout_centerVertical="true"
  37. />
  38. <Button
  39. android:layout_width="wrap_content"
  40. android:layout_height="wrap_content"
  41. android:layout_gravity="right"
  42. android:text="登录"
  43. android:layout_alignParentRight="true"
  44. android:onClick="login"
  45. />
  46. </RelativeLayout>
  47. </LinearLayout>

活动中的代码如下:

  1. package com.itydl.rwinrom;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.FileReader;
  9. import java.io.InputStreamReader;
  10.  
  11. import org.apache.http.entity.InputStreamEntity;
  12.  
  13. import android.os.Bundle;
  14. import android.annotation.SuppressLint;
  15. import android.app.Activity;
  16. import android.view.Menu;
  17. import android.view.View;
  18. import android.widget.CheckBox;
  19. import android.widget.EditText;
  20. import android.widget.Toast;
  21.  
  22. public class MainActivity extends Activity {
  23.  
  24. private EditText et_name;
  25. private EditText et_pass;
  26.  
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_main);
  31.  
  32. et_name = (EditText) findViewById(R.id.et_name);
  33. et_pass = (EditText) findViewById(R.id.et_pass);
  34.  
  35. readAccount();//在onCreate中读取原因是,活动一创建就读取用户名和密码进行回显。
  36.  
  37. }
  38.  
  39. public void readAccount(){
  40. File file = new File("data/data/com.itydl.rwinrom/info.txt");
  41. if(file.exists()){
  42. try {
  43. // FileInputStream fis = new FileInputStream(file);
  44. // //把字节流转换成字符流
  45. // BufferedReader br = new BufferedReader(new
  46. // InputStreamReader(fis));
  47.  
  48. BufferedReader br = new BufferedReader(new FileReader(file));
  49. //读取txt文件里的用户名和密码
  50. String text = br.readLine();
  51. String[] s = text.split("##");//正则表达
  52.  
  53. et_name.setText(s[0]);//ctrl+1提取全局变量
  54. et_pass.setText(s[1]);
  55. } catch (Exception e) {
  56. // TODO Auto-generated catch block
  57. e.printStackTrace();
  58. }
  59. }
  60. }
  61.  
  62. public void login(View v){
  63.  
  64. String name = et_name.getText().toString();
  65. String pass = et_pass.getText().toString();
  66.  
  67. CheckBox cb = (CheckBox) findViewById(R.id.cb);
  68. //判断选框是否被勾选
  69. if(cb.isChecked()){
  70. //data/data/com.itheima.rwinrom:这就是内部存储空间的路径
  71. File file = new File("data/data/com.itydl.rwinrom/info.txt");//这个路径是安卓特有的文件夹
  72. FileOutputStream fos;
  73. try {
  74. fos = new FileOutputStream(file);
  75. //勾选了复选框,会把用户名密码存入内部存储位置
  76. fos.write((name + "##" + pass).getBytes());
  77. fos.close();
  78. } catch (Exception e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. }
  83.  
  84. //创建并显示吐司对话框
  85. Toast.makeText(this, "登录成功", 0).show();
  86. }
  87.  
  88. }

最后是截图:

当退出程序,再进入时,会发现用户名和密码都回显。

Android简易实战教程--第七话《在内存中存储用户名和密码》的更多相关文章

  1. Android简易实战教程--第八话《短信备份~一》

    各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部 ...

  2. Android简易实战教程--第十七话《自定义彩色环形进度条》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533   点击打开链接 在Android初级教程里面,介绍了shape用法 ...

  3. Android简易实战教程--第二十七话《自定义View入门案例之开关按钮详细分析》

    转载此博客请注明出处点击打开链接       http://blog.csdn.net/qq_32059827/article/details/52444145 对于自定义view,可能是一个比较大的 ...

  4. Android简易实战教程--第二十三话《绚丽的菜单项》

    转载本博客请注明出处:点击打开链接  http://blog.csdn.net/qq_32059827/article/details/52327456 今天这篇稍微增强点代码量,可能要多花上5分钟喽 ...

  5. Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》

    没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如 ...

  6. Android简易实战教程--第十三话《短信备份和还原~三》

    之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...

  7. Android简易实战教程--第十话《模仿腾讯手机助手小火箭发射详解》

    之前对系统自带的土司的源码做了简要分析,见博客:点击打开链接 这一篇给一个小案例,自定义土司,模拟腾讯卫士的小火箭发射.如果想要迅速看懂代码,建议先去看一下上篇介绍点击打开链接 首先,定义一个服务,在 ...

  8. Android简易实战教程--第六话《开发一键锁屏应用2·完成》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http:// ...

  9. Android简易实战教程--第五话《开发一键锁屏应用》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应 ...

随机推荐

  1. ●杜教筛入门(BZOJ 3944 Sum)

    入门杜教筛啦. http://blog.csdn.net/skywalkert/article/details/50500009(好文!) 可以在$O(N^{\frac{2}{3}})或O(N^{\f ...

  2. ●BZOJ 4278 [ONTAK2015]Tasowanie

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4278 题解: 把两个串连接起来,用一个大数连接(必须要用大数).倍增算法求出后缀排名.然后两 ...

  3. 用js来实现那些数据结构11(字典)

    我们这篇文章来说说Map这种数据结构如何用js来实现,其实它和集合(Set)极为类似,只不过Map是[键,值]的形式存储元素,通过键来查询值,Map用于保存具有映射关系的数据,Map里保存着两组数据: ...

  4. Oracle VM VirtualBox虚拟机内Linux系统硬盘扩容步骤(CentOS6.5)

    1.首先获取要扩容的虚拟机的 UUID VBoxManage 改命令在C:\Program Files\Oracle\VirtualBox目录内,可先添加该目录到环境变量.C:\Users\yzkj- ...

  5. js 删除字符串中所有空格

    //去除头尾和中间空格,制表符 function trimSpaces(Str){               var ResultStr = "";               ...

  6. Redis Sentinel主从高可用方案

    Redis Sentinel主从高可用方案 本文介绍一种通过Jed和Sentinel实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上 ...

  7. PHP MySQL Update

    UPDATE 语句用于中修改数据库表中的数据. 更新数据库中的数据 UPDATE 语句用于更新数据库表中已存在的记录. 语法 UPDATE table_name SET column1=value, ...

  8. 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数

    本文承接上一篇文章:让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程 本文同步自博主的私人博客wing的地方酒馆 上一节说到,kotlin可以省去getter,se ...

  9. Bootstrap3 栅格系统-嵌套列

    为了使用内置的栅格系统将内容再次嵌套,可以通过添加一个新的 .row 元素和一系列 .col-sm-* 元素到已经存在的 .col-sm-* 元素内.被嵌套的行(row)所包含的列(column)的个 ...

  10. 高仿腾讯QQ最终版

    之前写过一篇关于高仿腾讯QQ的博客,不知道的看这:http://blog.csdn.net/htq__/article/details/51840273 ,主要是从界面上高仿了腾讯QQ,在UI上基本上 ...