Android SharedPreference的使用

在《Android 在内部存储读写文件》一文中,谈到了登录用户名和密码的方法,通过读取内存文件来实现,但是会出现问题,因为登录名和密码的形式通过username##password的形式,读取的时候以##为分割线,但是一旦用户名中存在##就会出现问题,本文使用SharedPreference来解决这个问题

1. 定义布局
使用之前的布局
2. 把组件的状态用SharedPreference保存起来

* 往SharedPreference里写数据

//拿到一个SharedPreference对象
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
//拿到编辑器
Editor ed = sp.edit();
ed.putBoolean("checkBox", isChecked);
ed.commit();

* 从SharedPreference里取数据

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
//从SharedPreference里取数据
boolean b = sp.getBoolean("checkBox", false);

简化后的代码如下:

package com.wuyudong.sharedpreference;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取到SharedPreference对象
        SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
        //获取sp中的内容
        String name = sp.getString("name", "");
        String pass = sp.getString("pass", "");
        EditText et_name = (EditText) findViewById(R.id.et_name);
        EditText et_pass = (EditText) findViewById(R.id.et_pass);
        //数据回显至输入框
        et_name.setText(name);
        et_pass.setText(pass);
    }

    public void click(View v) {
        EditText et_name = (EditText) findViewById(R.id.et_name);
        EditText et_pass = (EditText) findViewById(R.id.et_pass);

        String name = et_name.getText().toString();
        String pass = et_pass.getText().toString();

        // 获取到SharedPreference对象
        SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
        // 得到编辑器
        Editor ed = sp.edit();
        ed.putString("name", name);
        ed.putString("pass", pass);
        ed.commit();
    }

}

其实android中的很多设置都用到了SharedPreference

例如

查看com.android.settings/shared_prefs下的com.android.settings_preferences.xml文件

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
<map>
    <boolean name="sound_effects" value="true" />
    <boolean name="com.android.inputmethod.latin/.LatinIME" value="true" />
    <boolean name="force_hw_ui" value="false" />
    <boolean name="jp.co.omronsoft.openwnn/.OpenWnnJAJP" value="false" />
    <boolean name="auto_time" value="false" />
    <boolean name="show_hw_screen_udpates" value="false" />
    <boolean name="24 hour" value="true" />
    <boolean name="dock_sounds" value="false" />
    <string name="font_size">1.30</string>
    <boolean name="allow_mock_location" value="false" />
    <boolean name="keep_screen_on" value="false" />
    <boolean name="show_hw_layers_udpates" value="false" />
    <string name="date_format"></string>
    <boolean name="enable_adb" value="false" />
    <boolean name="enforce_read_external" value="false" />
    <boolean name="show_touches" value="false" />
    <boolean name="dtmf_tone" value="true" />
    <boolean name="strict_mode" value="false" />
    <boolean name="com.example.android.softkeyboard/.SoftKeyboard" value="false" />
    <boolean name="show_hw_overdraw" value="false" />
    <boolean name="auto_zone" value="false" />
    <string name="hdcp_checking">drm-only</string>
    <boolean name="show_cpu_usage" value="false" />
    <boolean name="debug_layout" value="false" />
    <boolean name="com.android.inputmethod.pinyin/.PinyinIME" value="false" />
    <boolean name="pointer_location" value="false" />
    <boolean name="disable_overlays" value="false" />
    <boolean name="bugreport_in_power" value="false" />
    <boolean name="haptic_feedback" value="true" />
    <boolean name="immediately_destroy_activities" value="false" />
    <boolean name="show_all_anrs" value="false" />
    <boolean name="verify_apps_over_usb" value="false" />
    <boolean name="lock_sounds" value="true" />
    <boolean name="show_screen_updates" value="false" />
    <boolean name="force_msaa" value="false" />
    <boolean name="wait_for_debugger" value="false" />
</map>
时间: 2024-12-15 20:03:27

Android SharedPreference的使用的相关文章

[android] sharedPreference入门

为了保存带有特殊字符的数据到文件中,谷歌提供的SharedPreference(共享参数). 通过Context对象的getSharedPreference(name,mode)方法得到SharedPreference对象,name参数是文件名称,mode参数是上一节的那些模式. 调用sp对象的edit()方法,得到Editor编辑器对象 调用Editor对象的putString(key,value)方法放入数据,很像Map集合 调用Editor对象的commit()方法提交一下,很像数据库的事

Android [SharedPreference轻量级存储]

SharedPreferencesActivity.java package com.xdw.a122.data; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widg

Android应用开发-护眼提醒-总结篇

设计初衷: 在学习<第一行代码>的服务那章时,涉及到了alarmmanager的内容.然后笔者当时正好在关注"程序猿怎样保护眼睛"的问题. 于是便自己做了一个demo,用于每个小时左右提醒一次,后来周围的朋友看到我有这个定时提醒,认为比較新奇.便说你以这个创意单独做一个APP吧. 鉴于软件的个性化.我在此款应用中也是增加了自己设置图片,设置提醒文字等功能.朋友说个性化振动是一个亮点. 终于效果:         涉及知识点以及相关博客地址: (博客中大多涉及的是笔者在学习的

Kotlin学习资料

欢迎关注本人Github:https://github.com/itgoyo 里边会时刻更新一些最新最潮的技术文章 2017-5-18 Google I/O 大会指定Kotlin成为Android的官方开发语言 本项目地址:https://github.com/kotlinandroid/kotlin-for-android 欢迎大家?????? 以下是收集整理的Kotlin资料 Kotlin官方资料Github地址: [https://github.com/JetBrains/kotlin](

Android简单介绍SharedPreference,内部文件,sdcard数据存储

SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared_prefs文件夹中 使用方式 创建对象的方式有三种 Context 的 getSharedPreferences() Activity 的 getPreferences() PreferenceManager 的 getDefaultSharedpreferences() 获取数据 sharedPrefs.getXXX()方法,如getInt(),getString()等 储存数据

android 登陆案例_最终版本 sharedpreference

xml  与之前的登陆案例相同 java代码: 1 package com.itheima.login; 2 3 import java.util.Map; 4 5 import com.itheima.login.util.UserInfoUtil; 6 import com.itheima.login_shared.R; 7 8 import android.app.Activity; 9 import android.content.Context; 10 import android.o

Android 使用Sharedpreference共享参数

import java.util.HashMap; import java.util.Map; import android.content.Context; import android.content.SharedPreferences; public class MySharedpreference { private Context context; public MySharedpreference(Context context) { // TODO Auto-generated c

【Android葵花宝典】之SharedPreference

在Android中有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvider.SharedPreferences作为操作简单最简单的一种方式,被广泛用于保存应用的配置信息. SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型.一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用. 实际上SharedPreferences是采用了XML格

android——利用SharedPreference做引导界面

很久以前就接触过sharedPreference这个android中的存储介质.但是一直没有实际使用过,今天在看之前做的“民用机型大全”的app时,突然想到可以使用sharedPreference类来改进这个app中的一个缺陷. 此前,我先介绍sharedPreference的使用.Android数据总共有四种存储的方式 一.SharePreference 二.SQLite 三.File 四.ContentProvider SharedPreference类是一个轻量级的存储类,特别适合保存软件