利用SharedPreferences完成記住帳號密碼的功能,
利用SharedPreferences完成記住帳號密碼的功能
:
記住密碼後,再次登入就會出現帳號密碼,否則沒有。
分析:
SharedPreferences可將資料存放區到本地的設定檔中
SharedPreferences會記錄CheckBox的狀態,如果CheckBox被選,則將設定檔中記錄的帳號密碼資訊回饋給帳號密碼控制項,否則清空。
SharedPreferences使用方法:
1、建立名為config的設定檔,並且私人
private SharedPreferences config;
config=getSharedPreferences("config", MODE_PRIVATE);
2、添加編輯器
Editor edit=config.edit();
3、向記憶體中寫入資料
String username=et_username.getText().toString();
String password=et_password.getText().toString();
edit.putString("username", username).putString("password", password);
4、提交到本地
edit.commit();
代碼:
fry.Activity01
1 package fry; 2 3 import com.example.rememberUserAndPassword.R; 4 5 import android.app.Activity; 6 import android.content.SharedPreferences; 7 import android.content.SharedPreferences.Editor; 8 import android.os.Bundle; 9 import android.view.View;10 import android.widget.Button;11 import android.widget.CheckBox;12 import android.widget.TextView;13 import android.widget.Toast;14 15 public class Activity01 extends Activity{16 private Button btn_login;17 private TextView et_username;18 private TextView et_password;19 private CheckBox cb_choose;20 private SharedPreferences config;21 22 23 @Override24 protected void onCreate(Bundle savedInstanceState) {25 // TODO Auto-generated method stub26 super.onCreate(savedInstanceState);27 setContentView(R.layout.activity01);28 config=getSharedPreferences("config", MODE_PRIVATE);29 btn_login=(Button) findViewById(R.id.btn_login);30 et_username=(TextView) findViewById(R.id.et_username);31 et_password=(TextView) findViewById(R.id.et_password);32 cb_choose=(CheckBox) findViewById(R.id.cb_choose);33 34 //是否記住了密碼,初始化為false35 boolean isCheck=config.getBoolean("isCheck", false);36 //Toast.makeText(this, isCheck+" ", Toast.LENGTH_SHORT).show();37 if(isCheck){38 et_username.setText(config.getString("username", ""));39 et_password.setText(config.getString("password", ""));40 cb_choose.setChecked(isCheck);41 }42 43 }44 //許可權要是public,要不然訪問不到45 //因為在button控制項中設定了android:onClick="onClick"46 public void onClick(View view){47 Toast.makeText(this, "登入成功", Toast.LENGTH_SHORT).show();48 Editor edit=config.edit();49 String username=et_username.getText().toString();50 String password=et_password.getText().toString();51 boolean isCheck=cb_choose.isChecked();52 //Toast.makeText(this, isCheck+" ", Toast.LENGTH_SHORT).show();53 //儲存CheckBox的狀態54 edit.putBoolean("isCheck", isCheck);55 if(isCheck){56 edit.putString("username", username).putString("password", password);57 }else{58 edit.remove("username").remove("password");59 }60 //提交到本地61 edit.commit();62 }63 }代碼邏輯部分
/記住帳號和密碼/res/layout/activity01.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <EditText 8 android:id="@+id/et_username" 9 android:layout_width="match_parent"10 android:layout_height="wrap_content"11 />12 13 <EditText14 android:id="@+id/et_password"15 android:layout_width="match_parent"16 android:layout_height="wrap_content"17 android:ems="10" >18 19 <requestFocus />20 </EditText>21 22 <LinearLayout 23 android:layout_width="wrap_content"24 android:layout_height="wrap_content"25 >26 <CheckBox 27 android:id="@+id/cb_choose"28 android:layout_width="wrap_content"29 android:layout_height="wrap_content"30 />31 <TextView 32 android:layout_width="wrap_content"33 android:layout_height="wrap_content"34 android:text="記住密碼"35 />36 37 </LinearLayout>38 <!-- android:onClick="onClick" 點擊時去class中調用onClick方法,許可權要為public -->39 <Button40 android:id="@+id/btn_login"41 android:layout_width="wrap_content"42 android:layout_height="wrap_content"43 android:text="登入"44 android:layout_gravity="center_horizontal"45 android:onClick="onClick"46 />47 </LinearLayout>
介面設計部分