一:SharedPreference如何使用

此文章只是提供一种数据保存的方式, 具体使用场景请根据需求情况自行调整。

EditText添加saveData点击事件, 保存数据。

diff --git a/res/layout/activity_voicemail_settings.xml b/res/layout/activity_voicemail_settings.xml
index cd7af05..57526f2 100755
--- a/res/layout/activity_voicemail_settings.xml
+++ b/res/layout/activity_voicemail_settings.xml
@@ -29,6 +29,7 @@
android:imeOptions="flagForceAscii|actionDone"
android:includeFontPadding="true"
android:inputType="text"
+ android:onClick="saveData"
android:paddingLeft="@dimen/focus_item_padding_x"
android:singleLine="true"
android:textColor="@color/lv_focused"
  1. 通过getSharedPreferences("voicemail_data", MODE_PRIVATE);获取SharedPreferen对象。
  2. sharedPreferences.edit();获取editor对象。
  3. initData()初始化EditText数据。
  4. saveData()保存输入数据。
  5. mEditText.setSelection(mEditText.getText().length());此方法主要设置EditText光标位置。
diff --git a/src/com/android/settings/VoicemailSettingsActivity.java b/src/com/android/settings/VoicemailSettingsActivity.java
index 9babb18..58e929a 100755
--- a/src/com/android/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/settings/VoicemailSettingsActivity.java
@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
@@ -12,6 +13,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
+import android.widget.Toast; import java.util.List; @@ -22,6 +24,10 @@ public class VoicemailSettingsActivity extends Activity implements View.OnClic
private int mSettingsFocusHeight;
private int mSettingsNormalHeight;
private int mSettingsStartY;
+ private SharedPreferences sharedPreferences;
+ private SharedPreferences.Editor editor;
+ private String key;
+ private String result; @Override
protected void onCreate(Bundle savedInstanceState) {
@@ -33,7 +39,12 @@ public class VoicemailSettingsActivity extends Activity implements View.OnClic
for (int i = 0; i < ids.length; i++) {
strs[i] = getString(ids[i]);
}
+ sharedPreferences = getSharedPreferences("voicemail_data", MODE_PRIVATE);
+ editor = sharedPreferences.edit();
mEditText = (EditText) findViewById(R.id.input_number);
+ initData();
+ mEditText.setSelection(mEditText.getText().length());//光标行尾
mSettingsRecyclerView = (SettingsRecyclerView) findViewById(R.id.voicemail_list_view);
mSettingsAdapter = new SettingsAdapter(this, strs, this);
mSettingsRecyclerView.setLayoutManager(mSettingsAdapter.getLayoutManager());
@@ -45,6 +56,25 @@ public class VoicemailSettingsActivity extends Activity implements View.OnClic
mSettingsRecyclerView.setHasFixedSize(true);
} + private void initData() {
+ result = sharedPreferences.getString(key, null);
+ if (result == null) {
+ mEditText.setText("");
+ } else {
+ mEditText.setText(result);
+ }
+ }
+
+ public void saveData(View view) {
+ editor.remove(key);
+ String value = mEditText.getText().toString().trim();
+ editor.putString(key, value);
+ editor.commit();
+ Toast.makeText(VoicemailSettingsActivity.this, "save success", Toast.LENGTH_SHORT).show();
+ finish();
+ }
+
+
@Override
public void onClick(View view) {
Log.d("jasun", "=============onClick============");
(END)

喜欢源码分析系列可参考其他文章:

Android源码分析(一)-----如何快速掌握Android编译文件

Android源码分析(二)-----如何编译修改后的framework资源文件

Android源码分析(三)-----系统框架设计思想

Android源码分析(四)-----Android源码编译及刷机步骤

Android源码分析(五)-----如何从架构师的角度去设计Framework框架

Android源码分析(十四)----如何使用SharedPreferencce保存数据的更多相关文章

  1. Android源码分析(四)-----Android源码编译及刷机步骤

    一 : 获取源码: 每个公司服务器地址不同,以如下源码地址为例: http://10.1.14.6/android/Qualcomm/msm89xx/branches/msm89xx svn环境执行: ...

  2. ABP源码分析十四:Entity的设计

    IEntity<TPrimaryKey>: 封装了PrimaryKey:Id,这是一个泛型类型 IEntity: 封装了PrimaryKey:Id,这是一个int类型 Entity< ...

  3. Heritrix源码分析(十四) 如何让Heritrix不间断的抓取(转)

    欢迎加入Heritrix群(QQ):109148319,10447185 , Lucene/Solr群(QQ) :  118972724 本博客已迁移到本人独立博客: http://www.yun5u ...

  4. Heritrix源码分析(十四)

    近段时间在搞定Lucene的一些问题,所以Heritrix源码分析暂时告一段落.今天下午在群里有同学提到了Heritrix异常终止的问题以及让Heritrix不停的抓取(就是抓完一遍后载入种子继续抓取 ...

  5. jQuery 源码分析(十四) 数据操作模块 类样式操作 详解

    jQuery的属性操作模块总共有4个部分,本篇说一下第3个部分:类样式操作部分,用于修改DOM元素的class特性的,对于类样式操作来说,jQuery并没有定义静态方法,而只定义了实例方法,如下: a ...

  6. Vue.js 源码分析(十四) 基础篇 组件 自定义事件详解

    我们在开发组件时有时需要和父组件沟通,此时可以用自定义事件来实现 组件的事件分为自定义事件和原生事件,前者用于子组件给父组件发送消息的,后者用于在组件的根元素上直接监听一个原生事件,区别就是绑定原生事 ...

  7. [Abp 源码分析]十四、DTO 自动验证

    0.简介 在平时开发 API 接口的时候需要对前端传入的参数进行校验之后才能进入业务逻辑进行处理,否则一旦前端传入一些非法/无效数据到 API 当中,轻则导致程序报错,重则导致整个业务流程出现问题. ...

  8. Android源码分析(十六)----adb shell 命令进行OTA升级

    一: 进入shell命令界面 adb shell 二:创建目录/cache/recovery mkdir /cache/recovery 如果系统中已有此目录,则会提示已存在. 三: 修改文件夹权限 ...

  9. Android源码分析(十五)----GPS冷启动实现原理分析

    一:原理分析 主要sendExtraCommand方法中传递两个参数, 根据如下源码可以知道第一个参数传递delete_aiding_data,第二个参数传递null即可. @Override pub ...

随机推荐

  1. poi基本使用

    poi基本使用 依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi< ...

  2. 使用Python获取图片的物理尺寸(KB)

    如何获取图片的物理尺寸,而非(width, height)? #! -*- coding: utf-8 -*- import requests import io url = "https: ...

  3. BZOJ练习记

    决定从头到尾干一波BZOJ!可能会写没几题就停下吧,但还是想学学新姿势啦. 1001. [BeiJing2006]狼抓兔子 即求 $(1, 1)$ 到 $(n, m)$ 的最小割.跑 dinic 即可 ...

  4. 用NABCD法提出靠谱的项目建议

    在项目中提出靠谱的建议,一方面能提高项目成功的概率,另一方面锻炼自己能力提升自己在项目中的影响力,所以我们要尽可能抓住机会在项目中提建议.那要如何提出靠谱的建议呢?从需求出发,明确做法和好处,分析竞争 ...

  5. [C/C++]大小端字节序转换程序

    计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式). 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿 ...

  6. MACbook关机开机的咚咚咚声音

    在MAC系统中,设置→声音设置→内置扬声器静音即可. windows下面没有试过.

  7. Linux系统运维笔记(6),CentOS 7.6双网卡路由配置

    Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...

  8. java web开发入门八(ssm整合)基于intellig idea

    ssm整合 一.导入相关包 二.开发流程 1.写entity package com.eggtwo.euq.entity; import java.io.Serializable; import ja ...

  9. Win10 1903 运行安卓模拟器蓝屏解决方案

    由于没有安卓机,想要测试一些东西,所以选择了安卓模拟器,可是一运行模拟器就导致电脑蓝屏,试了 N 次都不行. 于是在网上寻找解决方案,了解到导致蓝屏的原因都是因为虚拟化技术,我的系统是 Windows ...

  10. classLoader双亲委托与类加载隔离

    虽然前面把class文件的产生到加载使用流程说了一遍,但是还是想具体看看classLoader的双亲委托具体是如何运行的,有什么利弊. 还有想看看不同类加载器的不同命名空间带来那些好处和实际有那些应用 ...