Android——登入介面、SharedPreferences實現記住密碼等賬戶資訊
阿新 • • 發佈:2019-02-02
先看下效果圖:
該介面的佈局檔案為:
業務邏輯程式碼為:<?xml version="1.0" encoding="utf-8"?> <TableLayout 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:stretchColumns="1" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" tools:context="xjtu.com.rememberpwd.MainActivity"> <TableRow> <TextView android:text="賬號:" android:paddingLeft="30dp"/> <EditText android:id="@+id/username" android:background="@drawable/et_shape"/> </TableRow> <TableRow android:layout_marginTop="10dp"> <TextView android:text="密碼:" android:paddingLeft="30dp"/> <EditText android:id="@+id/password" android:background="@drawable/et_shape" android:inputType="textPassword"/> </TableRow> <TableRow android:layout_marginTop="10dp"> <CheckBox android:id="@+id/chk" android:text="記住密碼"/> <Button android:id="@+id/btn_login" android:background="@drawable/btn_shape" android:text="登入"/> </TableRow> </TableLayout>
主要思想:在輸入登入資訊後,點選“登入”前,如果勾選記住密碼,此時,點選“登入”會呼叫memInfo方法把資訊用SharedPrefenerces技術存入檔名為data的檔案中。軟體每次啟動時會在onCreate方法中把儲存的資訊恢復並自動回填到到相應的EditText中(第一次啟動沒有,因為還沒有建立data檔案)。如果不勾選,就不會記住密碼,就算之前記住了,也會清空,因為data檔案被清空。import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private Button btn_login; private EditText username,password; private CheckBox chk; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); restoreInfo(); } private void initView(){ btn_login=(Button)findViewById(R.id.btn_login); username=(EditText)findViewById(R.id.username); password=(EditText)findViewById(R.id.password); chk=(CheckBox)findViewById(R.id.chk); btn_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (chk.isChecked()){ String usr=username.getText().toString(); String pwd=password.getText().toString(); memInfo(usr,pwd); }else{ SharedPreferences.Editor et=getSharedPreferences("data",0).edit(); et.clear(); et.commit(); } Intent intent=new Intent(MainActivity.this,LoginSuccess.class); startActivity(intent); } }); } private void memInfo(String usr,String pwd){ SharedPreferences.Editor editor=getSharedPreferences("data",0).edit(); editor.putString("username",usr); editor.putString("password",pwd); editor.commit(); } private void restoreInfo(){ SharedPreferences sp=getSharedPreferences("data",0); username.setText(sp.getString("username","")); password.setText(sp.getString("password","")); } }