1. 程式人生 > 其它 >安卓開發學習10-1:資料儲存:Shared Preferences儲存

安卓開發學習10-1:資料儲存:Shared Preferences儲存

解析

什麼是Shared Perferences

應用場景

  • 配置資訊
  • 主題資訊
  • 遊戲的積分資訊等

儲存路徑

在本應用中的data-data-應用包-自定義名稱xml檔案下儲存寫入的資料資訊


使用

獲取步驟

讀取步驟

例項

程式碼
1、需求:實現自動登入,例如qq的可以設定自動登入,然後下一次就不用再寫登入賬號密碼

2、activity_main.xml:簡易實現輸入框

<?xml version="1.0" encoding="utf-8"?>
<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:background="@drawable/background" android:orientation="vertical" tools:context=".MainActivity"> <EditText android:id="@+id/username" android:layout_width
="match_parent" android:layout_height="wrap_content" android:hint="QQ號/手機號/郵箱" android:layout_marginTop="300dp"/> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密碼"
android:layout_marginTop="20dp"/> <ImageButton android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/login" android:layout_gravity="center"/> </LinearLayout>

3、MainActivit.java

public class MainActivity extends AppCompatActivity {
    //定義後臺賬號和密碼
    private String name = "fxz", pwd = "123";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //獲取編輯框使用者名稱和密碼
        EditText username_EditText = findViewById(R.id.username);
        EditText password_EditText = findViewById(R.id.password);
        //獲取登入按鍵
        ImageButton login = findViewById(R.id.login);
        //獲取Shared Preferences物件
        final SharedPreferences sharedPreferences = getSharedPreferences("qqAutoLogin", MODE_PRIVATE);
        /**********實現自動登入功能************/
        //獲取賬號資訊
        String username = sharedPreferences.getString("username", null);
        String password = sharedPreferences.getString("password", null);
        //判斷使用者名稱和密碼是否為空
        if (username != null && password != null) {
            //如果使用者名稱和密碼相同,實現自動登入
            if (username.equals(name) && password.equals(pwd)) {
                //通過Intent跳轉登入
                Intent intent = new Intent(MainActivity.this, MessageActivity.class);
                //啟動跳轉介面
                startActivity(intent);
            }
        } else {
            /**********實現手動登入並儲存賬號和密碼************/
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //獲取輸入的賬號和密碼
                    String local_username=username_EditText.getText().toString();
                    String local_password=password_EditText.getText().toString();
                    //獲取Editor物件
                    SharedPreferences.Editor editor=sharedPreferences.edit();
                    if(local_username.equals(name) && local_password.equals(pwd)){
                        //這裡儲存賬號和密碼並提交有些多餘
                        editor.putString("username",local_username);
                        editor.putString("password",local_password);
                        //提交資訊
                        editor.commit();
                        //通過Intent跳轉登入
                        Intent intent = new Intent(MainActivity.this, MessageActivity.class);
                        //啟動跳轉介面
                        startActivity(intent);
                        Toast.makeText(MainActivity.this, "已儲存賬號和密碼", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, "賬號和密碼錯誤", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
}

檔案檢視
使用Android Studio