1. 程式人生 > >第5天sp儲存案例:記住密碼+自動登入

第5天sp儲存案例:記住密碼+自動登入

第5天sp儲存案例:記住密碼+自動登入

記住密碼+自動登入

(1)xml佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:
layout_width="match_parent" android:layout_height="match_parent" tools:context=".LoginActivity" android:orientation="vertical" android:gravity="center"> <EditText android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:id="@+id/username"
android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:id="@+id/password" android:layout_width="match_parent" android:layout_height=
"wrap_content" /> <RelativeLayout android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:layout_alignParentLeft="true" android:id="@+id/cb_remember" android:text="記住密碼" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:layout_alignParentLeft="true" android:id="@+id/cb_auto_login" android:text="自動登入" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_alignParentRight="true" android:id="@+id/login" android:text="登入" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> </LinearLayout>

(2)Java程式碼

public class LoginActivity extends AppCompatActivity {
    private SharedPreferences sharedPreferences;
    private EditText username;
    private EditText password;
    private CheckBox remember_cb;
    private CheckBox auto_cb;
    private Button login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);
        remember_cb=findViewById(R.id.cb_remember);
        auto_cb=findViewById(R.id.cb_auto_login);
        login=(Button)findViewById(R.id.login);
        //TODO 讀取
        sharedPreferences=getSharedPreferences("1609A",MODE_PRIVATE);
        boolean ischeck= sharedPreferences.getBoolean("ischeck",false);
        boolean isauto= sharedPreferences.getBoolean("isauto",false);
        if(ischeck){
            //讀到使用者名稱和密碼展現在頁面中,複選框被勾選
            String username1=sharedPreferences.getString("username","");
            String password1=sharedPreferences.getString("password","");
            username.setText(username1);
            password.setText(password1);
            cb.setChecked(true);
        }
        if(isauto){//自動登入被選中
              Intent intent= new Intent(MainActivity.this,Main2Activity2.class);
              startActivity(intent);
        }
        
        //TODO 寫資料
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username2=username.getText().toString().trim();
                String password2=password.getText().toString().trim();
                //使用者名稱和密碼是否正確
                if("songdingxing".equals(username2)&&"123456".equals(password2)){
                    //判斷記住密碼是否被選中
                    if(cb_remember.isChecked()){//儲存資料
                        SharedPreferences.Editor edit = sharedPreferences.edit();
                        edit.putBoolean("ischeck",true);
                        edit.putString("username",username2);
                        edit.putString("password",password2);
                        edit.commit();
                    }else{//更新ischecked為false
                        SharedPreferences.Editor edit = sharedPreferences.edit();
                        edit.putBoolean("ischeck",false);
                        edit.commit();
                    }
                    //判斷自動登入是否被選中
                    if(cb_auto.isChecked()){//儲存資料
                        SharedPreferences.Editor edit = sharedPreferences.edit();
                        edit.putBoolean("isauto",true);
                        edit.commit();
                    }else{//更新isauto為false
                        SharedPreferences.Editor edit = sharedPreferences.edit();
                        edit.putBoolean("isauto",false);
                        edit.commit();
                    }
                    Intent intent= new Intent(MainActivity.this,Main2Activity2.class);
                    startActivity(intent);
                }
            }
        }); 
    }
}