Android-實現記住賬號密碼功能

Red&&Black發表於2020-10-13

文章標題

佈局

一個核取方塊

  <CheckBox
                android:id="@+id/checkbox"
                android:radius="5dp"
                android:text="記住我"
                android:layout_marginLeft="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

程式碼

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

	private CheckBox checkBox;

	 @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkBox = findViewById(R.id.checkbox);
        SharedPreferences sp = getSharedPreferences("items",MODE_PRIVATE);

        /**
         * getBoolean(name,defaultValue) 若沒有name,則返回defaultValue
         * 獲取標誌位,若flag為true,則有資料
         */
        if( sp.getBoolean("flag",false)==true ){
            getData();
            //模擬點選
            checkBox.performClick();
        }

        //設定checkbox的監聽事件
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isCheck) {

                //若選中,則儲存資料,否則,清除資料
                if(isCheck){
                    saveData();
                    Toast.makeText(MainActivity.this,"已儲存",Toast.LENGTH_LONG).show();
                }
                else{
                    clearData();
                }
            }
        });
    }
     /**
     * SharedPreferences為輕量級的儲存方式
     * Context.MODE_PRIVATE:為預設操作模式,代表該檔案是私有資料,只能被應用本身訪問。
     * 在該模式下,寫入的內容會覆蓋原檔案的內容
     */
    //清除資料
    private void clearData() {
        SharedPreferences sp = getSharedPreferences("items",MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        editor.commit();
        et1.setText("");
        et2.setText("");
    }
    /**
     * 獲取SharedPreferences資料
     */
    private  void getData(){
        SharedPreferences sp = getSharedPreferences("items", Context.MODE_PRIVATE);
        String username = sp.getString("username","");
        String password = sp.getString("password","");
        et1.setText(username);

        //密文設定
        TransformationMethod method =  PasswordTransformationMethod.getInstance();
        et2.setText(password);
        et2.setTransformationMethod(method);

    }

    /**
     *儲存資料
     * android:onClick響應的方法 只能用修飾符public
     */
    public void saveData(){



        SharedPreferences sharedPreferences = getSharedPreferences("items", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        String username = et1.getText().toString();
        String password = et2.getText().toString();

        if(!username.equals("") && !password.equals("")) {

            editor.putString("username", username);
            editor.putString("password", password);
            editor.putBoolean("flag", true);  //標誌位
            editor.commit();
        }

    }
}

測試

在這裡插入圖片描述

在這裡插入圖片描述

相關文章