界面效果: 佈局代碼: MainActivity: 讀寫文件工具類: ...
界面效果:
佈局代碼:
<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" tools:context=".MainActivity" > <EditText android:id="@+id/et_username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入用戶名" /> <EditText android:id="@+id/et_userpassword" android:password="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入密碼" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="20dp" > <CheckBox android:id="@+id/cb_ischeck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="記住用戶名密碼" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:onClick="login" android:text="登錄" /> </RelativeLayout> </LinearLayout>
MainActivity:
package com.dreamtech.login; import java.util.Map; import android.os.Bundle; import android.app.Activity; 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 et_name; private EditText et_password; private CheckBox cb_ischeck; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_username); et_password = (EditText) findViewById(R.id.et_userpassword); cb_ischeck = (CheckBox) findViewById(R.id.cb_ischeck); // 讀取已存的數據 Map<String, String> maps = UserInfoUtils.readInfo(MainActivity.this); if (maps != null) { // 取出 String name = maps.get("name"); String pwd = maps.get("pwd"); et_name.setText(name); et_password.setText(pwd); } } // 點擊事件 public void login(View v) { String name = et_name.getText().toString().trim(); String pwd = et_password.getText().toString().trim(); // 判斷用戶名密碼是否為空 if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) { Toast.makeText(MainActivity.this, "用戶名或密碼不能為空", Toast.LENGTH_LONG) .show(); } else { // 這裡不做資料庫操作,只是簡單的登錄邏輯 System.out.println("連接伺服器驗證"); // 存儲在本地 if (cb_ischeck.isChecked()) { boolean result = UserInfoUtils.saveInfo(MainActivity.this, name, pwd); if (result) { Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "保存失敗", Toast.LENGTH_LONG) .show(); } } else { Toast.makeText(MainActivity.this, "請勾選", Toast.LENGTH_LONG) .show(); } } } }
讀寫文件工具類:
package com.dreamtech.login; 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 UserInfoUtils { // 保存數據工具類 public static boolean saveInfo(Context context ,String username, String pwd) { try { String path = context.getFilesDir().getPath(); String result = username + "&&" + pwd; File file = new File(path,"info.txt"); FileOutputStream fos = new FileOutputStream(file); fos.write(result.getBytes()); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public static Map<String, String> readInfo(Context context) { try { String path = context.getFilesDir().getPath(); Map<String, String> maps = new HashMap<String, String>(); File file = new File(path,"info.txt"); FileInputStream fis = new FileInputStream(file); BufferedReader bufr = new BufferedReader(new InputStreamReader(fis)); String content = bufr.readLine(); String[] splits = content.split("&&"); String name = splits[0]; String pwd = splits[1]; maps.put("name", name); maps.put("pwd", pwd); fis.close(); return maps; } catch (Exception e) { e.printStackTrace(); return null; } } }