热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android开发登陆案例

这篇文章主要介绍了Android开发登陆案例的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

layout

<&#63;xml version="1.0"&#63;>
-


-

java代码

package com.itheima.login;
import java.util.Map;
import com.itheima.login.util.UserInfoUtil;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private EditText et_username;
private EditText et_password;
private CheckBox cb_rem;
private Button bt_login;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCOntext= this;
et_username = (EditText) findViewById(R.id.et_username);
et_password = (EditText) findViewById(R.id.et_password);
cb_rem = (CheckBox) findViewById(R.id.cb_rem);
bt_login = (Button) findViewById(R.id.bt_login);
//b.设置按钮的点击事件
bt_login.setOnClickListener(this);
//f.回显用户名密码 &#63;&#63;
Map map = UserInfoUtil.getUserInfo_android(mContext);//获取用户名密码
if(map != null){
String username = map.get("username");
String password = map.get("password");
et_username.setText(username);//设置用户名
et_password.setText(password);
cb_rem.setChecked(true);//设置复选框选中状态
}
}
private void login(){
//c.在onclick方法中,获取用户输入的用户名密码和是否记住密码
String username = et_username.getText().toString().trim();
String password = et_password.getText().toString().trim();
boolean isrem = cb_rem.isChecked();
//d.判断用户名密码是否为空,不为空请求服务器(省略,默认请求成功)
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
Toast.makeText(mContext, "用户名密码不能为空", Toast.LENGTH_SHORT).show();
return ;
}
//请求服务器,后面讲。。。。。。。。。。
//e.判断是否记住密码,如果记住,将用户名密码保存本地。&#63;&#63;&#63;&#63; 
if(isrem){
boolean result = UserInfoUtil.saveUserInfo_android(mContext,username,password);
if(result){
Toast.makeText(mContext, "用户名密码保存成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(mContext, "用户名密码保存失败", Toast.LENGTH_SHORT).show(); 
}
}else{
Toast.makeText(mContext, "无需保存", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_login:
login();
break;
default:
break;
}
}
}

新建包的代码

package com.itheima.login.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
public class UserInfoUtil {
//保存用户名密码
public static boolean saveUserInfo_android(Context context,String username, String password) {
try{
String userinfo = username + "##"+ password;//封装用户名密码
//得到私有目录下一个文件写入流; name : 私有目录文件的名称 mode: 文件的操作模式, 私有,追加,全局读,全局写
FileOutputStream fileOutputStream = context.openFileOutput("userinfo.txt", Context.MODE_PRIVATE);
fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件
fileOutputStream.close();
return true;
}catch (Exception e) {
e.printStackTrace();
}
return false;
}
//获取用户名密码
public static Map getUserInfo_android(Context context){
try{
//通过context对象获取一个私有目录的文件读取流
FileInputStream fileInputStream = context.openFileInput("userinfo.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
//读取一行中包含用户密码,需要解析
String readLine = bufferedReader.readLine();
String[] split = readLine.split("##");
HashMap hashMap = new HashMap();
hashMap.put("username", split[0]);
hashMap.put("password", split[1]);
bufferedReader.close();
fileInputStream.close();
return hashMap;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
//保存用户名密码
public static boolean saveUserInfo(Context context,String username, String password) {
try{
String userinfo = username + "##"+ password;//封装用户名密码
// String path = "/data/data/com.itheima.login/";//指定保存的路径
//通过Context对象获取私有目录的一个路径
String path = context.getFilesDir().getPath();
System.out.println("...............:"+path);
File file = new File(path,"userinfo.txt");//创建file
FileOutputStream fileOutputStream = new FileOutputStream(file);//创建文件写入流
fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件
fileOutputStream.close();
return true;
}catch (Exception e) {
e.printStackTrace();
}
return false;
}
//获取用户名密码
public static Map getUserInfo(Context context){
try{
// String path = "/data/data/com.itheima.login/";//指定保存的路径
//通过Context对象获取私有目录的一个路径
String path = context.getFilesDir().getPath();
System.out.println("...............:"+path);
File file = new File(path,"userinfo.txt");//创建file
FileInputStream fileInputStream = new FileInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
//读取一行中包含用户密码,需要解析
String readLine = bufferedReader.readLine();
String[] split = readLine.split("##");
HashMap hashMap = new HashMap();
hashMap.put("username", split[0]);
hashMap.put("password", split[1]);
bufferedReader.close();
fileInputStream.close();
return hashMap;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

我存在的问题与修正

*alt+enter------补全抽象方法*/
/*获取全局变量*****怎么做 fied*/
/*如何格式化代码*/
/*点击事件用全局语句*/
/*很多程序都用到contest,所以在类中定义对象吧!赋值this,以后toast用到直接调用*/
/*ctrl+1 封装临时自己打的类,crate class*/
/*创建方法*/
/*保存文件*/

1.保存到私有目录下

2.保存路径

3.创建一个File对象

4.再创建一个FileOotputStream对象,传File进去

/*私开包,斯开方法*/
/*保存文件*/
1.保存到私有目录下 /date/date/包名/
2.保存路径(特殊)
3.创建一个File对象(路径,文件类型加名字)
4.再创建一个FileOotputStream对象,传File进去,其实就是创建文件写入流
5.对读取这一块直接 try一下 catch输出信息(什么stake)
6.FS调用write方法,传字节流进去。传字节进去,而且自能传一个,怎么办?
用字符串+ 处理 那混合了怎么办?
加两个特殊字符进去##(不能用正则表达式的字符)。后面再用 分割字符串的方法分开
7.字符串调用自身 getbyte()方法
8.把流关闭 FS调用close()方法
9.最后return ture 告诉保存成功
/*Map?*/
/*toast*/
1.Toast.makeText(mtext,"Stri ng",Toast.选时间).show
2.mcOntext=this ,就是创建一个数据
/*什么时候回显*/
1.程序一加载就回显示
2.是不是要读取文件才能读取
3.读的路径一样,创建的文件一样
4.创建一个输入字节流 FIS(F)
4.用户名,密码都是一行,怎么读取一行
创建BR对象(new IR(F))
5.创建字符串读取字节 BR。RL()
6.分割字符串的使用
7.集合的使用 哈希表
8.关闭流

以上所述是小编给大家介绍的Android开发登陆案例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
author-avatar
Lv嘉文_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有