您的位置:首页 > 移动开发 > Android开发

Android复习练习四(QQ登陆界面回显用户名密码,使用/data/data/包名/路径 )

2014-08-27 21:50 507 查看
需求:创建一个类似于QQ登陆界面的Activity,实现保存用户名密码选项,回显之前保存过的用户名和密码功能,主要测试this.getFilesDir()方法返回情况

getFilesDir()方法返回一个File对象,指向/data/data/包名/files/目录

界面大致如图:



Activity代码如下:

package com.alexchen.qqlogin;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText etAccount;
	private EditText etPassword;
	private CheckBox cbIsRemember;
	private File fileDir;
	private String info;
	private StringBuffer sb;
	private int len;
	private byte[] buffers;
	private FileInputStream fis;
	private String account;
	private String password;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		try {
			// 得到两个输入框和一个checkbox的对象
			etAccount = (EditText) findViewById(R.id.et_qq_account);
			etPassword = (EditText) findViewById(R.id.et_qq_pasword);
			cbIsRemember = (CheckBox) findViewById(R.id.cb_isremember);

			// 数据存数路径
			fileDir = this.getFilesDir();
			File loginInfo = new File(fileDir, "info.txt");
			// 判断是否能够回显
			if (loginInfo.exists() && loginInfo.length() > 0) {

				info = "";
				sb = new StringBuffer("");
				fis = new FileInputStream(loginInfo);
				len = 0;
				buffers = new byte[1024];
				while ((len = fis.read(buffers)) != -1) {
					sb.append(new String(buffers));
				}
				info = sb.toString().trim();
				fis.close();
				//判断得到的信息是否为空
				if (!TextUtils.isEmpty(info)) {
					etAccount.setText(info.split("##")[0]);
					etPassword.setText(info.split("##")[1]);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void login(View v) {
		try {
			account = etAccount.getText().toString();
			password = etPassword.getText().toString();
			
			//如果用户名或者密码为空
			if (TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) {
				Toast.makeText(this, "对不起,用户名或密码不能为空", Toast.LENGTH_SHORT)
						.show();
				return;
			}
			//如果保存密码选框被选中
			if (cbIsRemember.isChecked()) {
				File loginInfo = new File(fileDir, "info.txt");
				FileOutputStream fos = new FileOutputStream(loginInfo);
				fos.write((account + "##" + password).getBytes());
				fos.close();
			}
			//这个程序暂不判断用户名密码是否正确,一律提示登录成功
			Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show();
		} catch (Exception e) {
			e.printStackTrace();
			Toast.makeText(this, "登陆失败", Toast.LENGTH_SHORT).show();
		}

	}
}


布局文件代码如下:
<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:padding="5dp"
    tools:context="${relativePackage}.${activityClass}" >

    <EditText
        android:id="@+id/et_qq_account"
        android:layout_marginTop="5dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:inputType="number"
        android:singleLine="true" />

    <EditText
        android:id="@+id/et_qq_pasword"
        android:layout_marginTop="5dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:singleLine="true" />

    <CheckBox
        android:id="@+id/cb_isremember"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="是否记住用户名和密码" />

    <Button
        android:layout_marginTop="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="login"
        android:layout_gravity="right"
        android:text="登陆" />

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐