文章标题

原创 2015年07月06日 20:06:45

android共享存储SharedPreferences

适用范围

保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等

核心原理

  • 保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
  • SharedPreferences数据总是存储在/data/data//shared_prefs目录下。
  • SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。
  • SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例
  • 该方法中name表示要操作的xml文件名,第二个参数具体如下:
    • Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
    • Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
    • Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写
  • Editor有如下主要重要方法:
    • SharedPreferences.Editor clear():清空SharedPreferences里所有数据
    • SharedPreferences.Editor putXxx(String key , xxx value): 向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据
    • SharedPreferences.Editor remove(): 删除SharedPreferences中指定key对应的数据项
    • boolean commit(): 当Editor编辑完成后,使用该方法提交修改

创建共享存储文件

主要使用的是SharedPreferences接口和SharedPreferences.Editor接口

读取共享存储文件的内容

        // 读取共享文件里面的数据
        // 使用上下文对象的getSharedPreferences获取SharedPreferences对象
        // 参数一:代表文件名
        // 参数二:共享文件的模式,Context.MODE_PRIVATE代表本项目可用
        sharedPreferences = this.getSharedPreferences("myfile", Context.MODE_PRIVATE);
        // 使用sharedPreferences对象的getxxx方法获取键值信息
        String str1 = sharedPreferences.getString("textView1", "");
        String str2 = sharedPreferences.getString("textView2", "");
        String str3 = sharedPreferences.getString("textView3", "");
        textView1.setText(str1);
        textView2.setText(str2);
        textView3.setText(str3);

设置共享存储文件的内容


        // 写入数据使用的是SharedPreferences.Editor对象,可以使用sharedPreferences.edit()方法获得
        Editor editor = sharedPreferences.edit();
        editor.putString("textView1", "111111");
        editor.putString("textView2", "222222");
        editor.putString("textView3", "333333");
        //需要提交
        editor.commit();

完整的代码

package com.hzj.act;

import com.hzj.myshareddb.R;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainAct extends Activity {

    TextView textView1;
    TextView textView2;
    TextView textView3;

    SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_act);
        textView1 = (TextView) this.findViewById(R.id.textView1);
        textView2 = (TextView) this.findViewById(R.id.textView2);
        textView3 = (TextView) this.findViewById(R.id.textView3);

        // 读取共享文件里面的数据
        // 使用上下文对象的getSharedPreferences获取SharedPreferences对象
        // 参数一:代表文件名
        // 参数二:共享文件的模式,Context.MODE_PRIVATE代表本项目可用
        sharedPreferences = this.getSharedPreferences("myfile", Context.MODE_PRIVATE);
        // 使用sharedPreferences对象的getxxx方法获取键值信息
        String str1 = sharedPreferences.getString("textView1", "");
        String str2 = sharedPreferences.getString("textView2", "");
        String str3 = sharedPreferences.getString("textView3", "");
        textView1.setText(str1);
        textView2.setText(str2);
        textView3.setText(str3);
    }

    public void btn1(View v) {
        // 写入数据使用的是SharedPreferences.Editor对象,可以使用sharedPreferences.edit()方法获得
        Editor editor = sharedPreferences.edit();
        editor.putString("textView1", "111111");
        editor.putString("textView2", "222222");
        editor.putString("textView3", "333333");
        // 需要提交
        editor.commit();
    }

}

修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全

在用dede调用列表标题出来的时候,会发现标题文字字数显示不完全,那是因为dede默认标题出来长度是30个字符,为了让标题显示完整,要做以下修改!1、进入后台–系统–系统设置–系统基本参数–其他选项–...
  • yxwmzouzou
  • yxwmzouzou
  • 2015年04月29日 11:25
  • 10103

WordPress通过文章ID获取文章标题内容等信息。

使用Wordpress的朋友可能遇到这样的问题,在非single.php页面中我们有时候想要调用当前文章的标题、内容等信息,而Wordpress在生成文章页的时候在各个页面中唯一不变的只有当前的文章I...
  • Q1059081877Q
  • Q1059081877Q
  • 2015年05月30日 22:12
  • 2162

基于标题分类的文章主题句识别与提取方法

基于标题分类的主题句提取方法 基于标题分类的主题句提取方法可描述为: 给定一篇新闻报道, 计算标题与新闻主题词集的相似度, 判断标题是否具有提示性。对于提示性标题,抽取新闻报道中与其最相似的句子作为主...
  • lihaitao000
  • lihaitao000
  • 2016年06月24日 17:53
  • 2976

文章标题上下轮番滚动.zip

  • 2012年09月04日 12:31
  • 28KB
  • 下载

【Java】获取指定HTML 文档指定的body、页中超链接的标题和链接、指定博客文章的内容

  • 2017年08月20日 22:09
  • 2.59MB
  • 下载

文章标题自动标注程序

  • 2015年06月25日 17:04
  • 6.93MB
  • 下载

如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 Java和Android架构2017年总结:文章精选 吊炸天!74

如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 ...
  • starzhou
  • starzhou
  • 2018年01月09日 13:38
  • 37

文章标题 HDU-3067 小t的游戏

小t有点神经质,喜欢发明一些稀奇古怪的游戏,比如说左手和右手打架就是他发明的。 这个周末,小t又发明了一个有趣的硬币游戏:小t手里有6枚硬币,他把硬币分成了两堆,一左一右并排堆放,一堆2个,一堆4...
  • acmliying
  • acmliying
  • 2017年02月26日 14:12
  • 183

Jsoup获取csdn文章链接和标题的方法

附件:jsoup-1.8.1.jar import org.jsoup.Jsoup; import org.jsoup.helper.Validate; import org.jsoup.nodes....
  • fei20121106
  • fei20121106
  • 2015年03月16日 10:47
  • 601

微信公众号所有历史文章的标题/点赞数/阅读数统计

下面这段代码的逻辑起点是页面滑到底部ajax加载的一个链接url_initial(我是在手机微信上在浏览某个公众号的某个页面时send to Chat到自己账号,获得链接后在电脑chrome上打开。通...
  • wkl7123
  • wkl7123
  • 2016年07月28日 02:30
  • 3561
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文章标题
举报原因:
原因补充:

(最多只允许输入30个字)