登录案例
- 设置UI布局
- 获取控件ID
- 保存数据
- 设置点击事件
- 通过上下文获取系统私有路径
- 将数据写入到文件(write)
- 读取数据
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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="ml.no1.MainActivity">
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入账号"
android:inputType="textPersonName" />
<EditText
android:id="@+id/et_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入密码"
android:inputType="textPassword" />
<CheckBox
android:id="@+id/cb_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码" />
<Button
android:id="@+id/bt_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登陆" />
</LinearLayout>
Java代码
package ml.no1;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText et_name;
private EditText et_pass;
private CheckBox cb_data;
private Button bt_login;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
et_name = (EditText) findViewById(R.id.et_name);
et_pass = (EditText) findViewById(R.id.et_pass);
cb_data = (CheckBox) findViewById(R.id.cb_data);
bt_login = (Button) findViewById(R.id.bt_login);
bt_login.setOnClickListener(this);
HashMap<String, String> hashMap = (HashMap<String, String>) DataInfo.getDataInfo(mContext);
if (hashMap != null) {
String username = hashMap.get("username");
String password = hashMap.get("password");
et_name.setText(username);
et_pass.setText(password);
cb_data.setChecked(true);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_login:
login();
}
}
private void login() {
String username = et_name.getText().toString();
String password = et_pass.getText().toString();
boolean checked = cb_data.isChecked();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(this, "帐号密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
if (checked) {
boolean info = DataInfo.setDataInfo(mContext, username, password);
if (info) {
Toast.makeText(mContext, "数据保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mContext, "数据保存失败", Toast.LENGTH_SHORT).show();
}
}
}
}
Java工具类
package ml.no1;
import android.content.Context;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Administrator on 2012/1/1.
*/
public class DataInfo {
/**
* 存储数据
*
* @param mContext 上下文
* @param username 帐号
* @param password 密码
* @return
*/
public static boolean setDataInfo(Context mContext, String username, String password) {
String info = username + "##" + password;
try {
FileOutputStream stream = mContext.openFileOutput("info.txt", Context.MODE_PRIVATE);
stream.write(info.getBytes());
stream.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* 读取文件
*
* @param context
* @return
*/
public static Map<String, String> getDataInfo(Context context) {
try {
FileInputStream stream = context.openFileInput("info.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line = reader.readLine();
String[] split = line.split("##");
HashMap hashMap = new HashMap<>();
hashMap.put("username", split[0]);
hashMap.put("password", split[1]);
stream.close();
reader.close();
return hashMap;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}