2022-10-28学习内容
1.SharedPreferences用法
1.1activity_share_write.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="姓名:" android:textColor="@color/black" android:textSize="17sp" /> <EditText android:id="@+id/et_name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:background="@drawable/editext_selector" android:hint="请输入姓名" android:inputType="text" android:maxLength="12" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="年龄:" android:textColor="@color/black" android:textSize="17sp" /> <EditText android:id="@+id/et_age" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:background="@drawable/editext_selector" android:hint="请输入年龄" android:inputType="number" android:maxLength="2" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/tv_height" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="身高:" android:textColor="@color/black" android:textSize="17sp" /> <EditText android:id="@+id/et_height" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:background="@drawable/editext_selector" android:hint="请输入身高" android:inputType="number" android:maxLength="3" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <TextView android:id="@+id/tv_weight" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="体重:" android:textColor="@color/black" android:textSize="17sp" /> <EditText android:id="@+id/et_weight" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:background="@drawable/editext_selector" android:hint="请输入体重" android:inputType="numberDecimal" android:maxLength="5" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout> <CheckBox android:id="@+id/ck_married" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="false" android:gravity="center" android:text="已婚" android:textColor="@color/black" android:textSize="17sp" /> <Button android:id="@+id/btn_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="保存到共享参数" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout>
1.2ShareWriteActivity.java
package com.example.chapter06; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; public class ShareWriteActivity extends AppCompatActivity implements View.OnClickListener { private EditText et_name; private EditText et_age; private EditText et_height; private EditText et_weight; private CheckBox ck_married; private SharedPreferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_share_write); et_name = findViewById(R.id.et_name); et_age = findViewById(R.id.et_age); et_height = findViewById(R.id.et_height); et_weight = findViewById(R.id.et_weight); ck_married = findViewById(R.id.ck_married); findViewById(R.id.btn_save).setOnClickListener(this); preferences = getSharedPreferences("config", Context.MODE_PRIVATE); reload(); } private void reload() { String name = preferences.getString("name", null); if (name != null) { et_name.setText(name); } int age = preferences.getInt("age", 0); if (age != 0) { et_age.setText(String.valueOf(age)); } float height = preferences.getFloat("height", 0f); if (height != 0f) { et_height.setText(String.valueOf(height)); } float weight = preferences.getFloat("weight", 0f); if (height != 0f) { et_weight.setText(String.valueOf(weight)); } boolean married = preferences.getBoolean("married", false); ck_married.setChecked(married); } @Override public void onClick(View v) { String name = et_name.getText().toString(); String age = et_age.getText().toString(); String height = et_height.getText().toString(); String weight = et_weight.getText().toString(); SharedPreferences.Editor editor = preferences.edit(); editor.putString("name", name); editor.putInt("age", Integer.parseInt(age)); editor.putFloat("height", Float.parseFloat(height)); editor.putFloat("weight", Float.parseFloat(weight)); editor.putBoolean("married", ck_married.isChecked()); editor.commit(); } }
1.3效果:
退出应用,重新进入,从SharedPreferences中读取:
SharedPreferences文件位置:
1.4config.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">ceshi</string> <float name="weight" value="110.0" /> <boolean name="married" value="true" /> <int name="age" value="27" /> <float name="height" value="170.0" /> </map>