古人已用三冬足,年少今开万卷余。这篇文章主要讲述Android开发数据持久化存储,sharePreference(偏好选择)的练习相关的知识,希望能为你提供帮助。
一、目标
以编写手机设置界面为例子,学习sharePreference的使用
二、具体内容
sharePreference主要用于储存用户的偏好设置,例如在安装未知应用的时候是否提醒等等,一般是那种选择的按钮。
储存其步骤共有4步:(假设layout界面的switch id为is_allow_unkown_apps_switch)
//第一步、拿到sharePreference
sharedPreferences = this.getSharedPreferences("set_info_true", MODE_PRIVATE);
//第二步、进入编辑模式
SharedPreferences.Editor edit = sharedPreferences.edit();
//第三步、保存数据
edit.putBoolean("state",isChecked);
//第四步、保存编辑器
edit.commit();
//实现回写
boolean state = sharedPreferences.getBoolean("state", false);
//用state来接受存好的数据,默认为false
isAllowUnkownSouce.setChecked(state);
//回写
三、源代码
文章图片
文章图片
package com.example.qq_logindemo; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.widget.CompoundButton; import android.widget.Switch; import androidx.annotation.Nullable; public class PreferenceDemoActivity extends Activity implements CompoundButton.OnCheckedChangeListener {private Switch isAllowUnkownSouce; private static final String TAG="PreferenceDemoActivity"; SharedPreferences sharedPreferences; //private static final String TAG="PreferenceDemoActivity"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preference_demo); //拿到控件 initView(); //设置监听 initClickListener(); //第一步、拿到sharedPreferences sharedPreferences = this.getSharedPreferences("set_info_true", MODE_PRIVATE); boolean state = sharedPreferences.getBoolean("state", false); isAllowUnkownSouce.setChecked(state); }private void initClickListener() { isAllowUnkownSouce.setOnCheckedChangeListener(this); }private void initView() { isAllowUnkownSouce = this.findViewById(R.id.is_allow_unkown_apps_switch); }@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //在这里对数据进行保存 //Log.d(TAG, "onCheckedChanged: "+ isChecked); //第二步、进入编辑模式 SharedPreferences.Editor edit = sharedPreferences.edit(); //第三步、保存数据 edit.putBoolean("state",isChecked); //第四步、保存编辑器 edit.commit(); } }
PreferenceDemoActivity
文章图片
文章图片
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp"> < LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> < TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="未知来源" android:textColor="@color/colorAccent" android:textSize="20sp" /> < TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:padding="10dp" android:text="是否允许未知应用的安装" /> < /LinearLayout> < Switch android:id="@+id/is_allow_unkown_apps_switch" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_height="wrap_content"/> < /RelativeLayout>
View Code 四、运行结果
文章图片
如果这个界面被关闭之后再次打开,显示的还会是之前的选择结果。【Android开发数据持久化存储,sharePreference(偏好选择)的练习】
推荐阅读
- Android数据存储
- 谈谈Android Binder机制及AIDL使用
- Android studio——LinearLayout(线性布局)
- 入门实战资料《Android进阶解密》+《Android进阶之光》+《重构改善既有的代码第2版》电子资料学习
- 《Pro Spring Boot 2》第四章(Web Applications with Spring Boot)
- Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of
- Android 添加framework资源包
- android--------解决Entities and POJOs must have a usable public constructor
- android----解决Read timed out的办法