【实战】qq登录界面及回显用户的账户和密码

来源:互联网 发布:oracle distinct 优化 编辑:程序博客网 时间:2024/05/21 14:53


用户第一次登录的时候,勾选记住用户名和密码操作,会将此时的用户名和密码写入文件中,第二次访问的时候会读写入第一次的数据。

第一种方式是通过建立文件的方式:

MainActivity.java:

package com.lcz.qq_login;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.OutputStream;import android.os.Bundle;import android.os.Environment;import android.annotation.SuppressLint;import android.app.Activity;import android.text.TextUtils;import android.text.format.Formatter;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;@SuppressLint("NewApi") public class MainActivity extends Activity implements View.OnClickListener{private EditText qq_number;private EditText qq_password;private Button login_btn;private CheckBox cbx;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //初始化控件        qq_number=(EditText)findViewById(R.id.qqnumber);        qq_password=(EditText)findViewById(R.id.qqpassword);        login_btn=(Button)findViewById(R.id.btn_login);        cbx=(CheckBox)findViewById(R.id.remember);                login_btn.setOnClickListener(this);                //File file=new File("/data/data/com.lcz.qq_login/info.txt");保存到应用程序中        //File file=new File(this.getFilesDir(),"info.txt");保存到应用程序中        //File file=new File(this.getCacheDir(),"info.txt");//保存到sd卡中                       File file=new File(Environment.getExternalStorageDirectory(),"info.txt");        if(file.exists()&&file.length()>0){        //读取file中的数据,然后回显        try {BufferedReader br=new BufferedReader(new FileReader(file));String line=br.readLine();String num=line.split("#---#")[0];String pwd=line.split("#---#")[1];qq_number.setText(num);qq_password.setText(pwd);        } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}                 }           }    //点击登录后会执行login方法@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//获得输入框中写入的值String number=qq_number.getText().toString().trim();String password=qq_password.getText().toString().trim();//判断是否填入了number以及password的值if(TextUtils.isEmpty(number)||TextUtils.isEmpty(password)){//给用户提示,输入号码和密码Toast.makeText(this, "请输入qq号码和密码", Toast.LENGTH_SHORT).show();return;}//判断是否勾选 checkbox,如果勾选了checkbox,那么将qq号码和qq密码保存下来boolean isChecked=cbx.isChecked();if(isChecked){//勾选了的话,将数据保存起来//context:上下文//context:给用户显示的信息//duration:消息持续的时间try {//File file=new File("/data/data/com.lcz.qq_login/info.txt");//File file=new File(this.getFilesDir(),"info.txt");保存到应用程序//File file=new File(this.getCacheDir(),"info.txt");//保存到应用程序中//File file=new File("/mnt/sdcard/info.txt");//File file=new File("/mnt/sdcard/info.txt");   File file=new File(Environment.getExternalStorageDirectory(),"info.txt");OutputStream out=new FileOutputStream(file);String value=number+"#---#"+password;out.write(value.getBytes());out.close();Toast.makeText(this, "勾选了,保存成功", Toast.LENGTH_SHORT).show();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}else{//没有勾选的话,不保存数据Toast.makeText(this, "没有勾选,没有保存成功", Toast.LENGTH_SHORT).show();}}            }

activity_main.xml:

<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="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ImageView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/qq"        android:layout_gravity="center"/>    <EditText        android:id="@+id/qqnumber"        android:hint="请输入qq号码"         android:layout_width="fill_parent"        android:layout_height="wrap_content"/>    <EditText        android:id="@+id/qqpassword"        android:inputType="textPassword"        android:hint="请输入qq密码"         android:layout_width="fill_parent"        android:layout_height="wrap_content"/>    <CheckBox        android:id="@+id/remember"         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="记住用户名和密码"/>    <Button         android:id="@+id/btn_login"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="登录"/></LinearLayout>

第二种方式是通过sharedPreference来实现回显

sharedPreference是android中提供一个特有的用来保存数据的

MainActivity.java:

package com.itheima.qqlogin;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.OutputStream;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.text.TextUtils;import android.text.format.Formatter;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener {private EditText ed_qqnumber;private EditText ed_qqpassword;private CheckBox cbx;private Button btn_login;private SharedPreferences sp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //初始化控件         ed_qqnumber = (EditText) findViewById(R.id.qqnumber);        ed_qqpassword = (EditText) findViewById(R.id.qqpassword);        cbx = (CheckBox) findViewById(R.id.remember);        btn_login=(Button) findViewById(R.id.btn_login);                sp = getSharedPreferences("config", 0);                // 如果找到了 number的 值, 那么 就 返回 number的值, 否则 就返回 这里的默认值        String num= sp.getString("number", "");       String pwd= sp.getString("password", "");               ed_qqnumber.setText(num);       ed_qqpassword.setText(pwd);              btn_login.setOnClickListener(this);    }        //点击 登录 后会执行 login 方法    public void onClick(View v){        //获得 输入 框 中  写入的 值     String number = ed_qqnumber.getText().toString().trim();    String password = ed_qqpassword.getText().toString().trim();        // 判断 是否 填入了 number以及 password的值     if(TextUtils.isEmpty(number)||TextUtils.isEmpty(password)){        //给 用户提示,  输入 号码 和 密码    Toast.makeText(this, "请输入 qq号码 和密码 ", 0).show();    return;    }        //判断 是否勾选了checkbox ,如果勾选了checkbox ,那么就 将 qq号和密码 保存起来     boolean isChecked = cbx.isChecked();        if(isChecked){            //在勾选了  checkbox的时候, 将 数据保存起来         try {        // 将数据 保存起来, 使用 sharedPreference    // config文件将会生成 在 应用的文件夹下 --- 一个 xml 格式 的文件    // 一般 情况下, 应用自己的数据 只有 当前应用 自己可以去读,  所以 通常 会写      sp = getSharedPreferences("config", 0);        Editor editor = sp.edit();        editor.putString("number", number);    editor.putString("password", password);        editor.commit();    Toast.makeText(this, "勾选了, 保存成功", 0).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "勾选了, 没  保存成功", 0).show();}        }else{    //在没 勾选 checkbox的时候, 不保存数据     //说明没 勾选     Toast.makeText(this, "没 勾选了", 0).show();        }        }    }




原创粉丝点击