文档章节

android使用sharepreference保存用户操作数据

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 565
阅读 22
收藏 0
点赞 2
评论 0

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下

资源目录图:


布局layout代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView 
        android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:text="@string/name"
        />
    <EditText 
        android:id="@+id/name"
        android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:hint="@string/name"
        />
    <TextView 
        android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:text="@string/age"
        />
    <EditText
        android:id="@+id/age"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/age" 
        />
    <Button 
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/saveBtn"
        android:onClick="save"
        />
</LinearLayout>

MainActivity.java代码:

package org.dyb.sharepreferencedemo;

import java.util.Map;

import org.dyb.service.PreferencesService;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private EditText nameEdit;
	private EditText ageEdit;
	PreferencesService service;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		nameEdit=(EditText) findViewById(R.id.name);
		ageEdit=(EditText) findViewById(R.id.age);
		//saveBtn=(Button) findViewById(R.id.save);
		service=new PreferencesService(this);
		//回显
		Map<String,String> map=service.getPreferences();
		nameEdit.setText(map.get("name"));
		ageEdit.setText(map.get("age"));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void save(View v){
		String nameString=nameEdit.getText().toString();
		String ageString=ageEdit.getText().toString();
		service.save(nameString, Integer.valueOf(ageString));
		Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show();
	}
	
	
}

PreferencesService.java代码:

package org.dyb.service;


import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class PreferencesService {
	private Context context;
	
	public PreferencesService(){}
	
	public PreferencesService(Context context){
		this.context=context;
	}
	
	public void save(String name,int age){
		SharedPreferences preferences=context.getSharedPreferences("ddd", Context.MODE_PRIVATE);
		Editor edit=preferences.edit();
		//数据是放在内存中的
		edit.putString("name", name);
		edit.putInt("age", age);
		//提交方法,把内存中的数据提交到文件中
		edit.commit();
	}
	//获取保存的文件内容
	public Map<String,String> getPreferences(){
		Map<String,String> param=new HashMap<String, String>();
		SharedPreferences preferences=context.getSharedPreferences("ddd", Context.MODE_PRIVATE);
		param.put("name", preferences.getString("name", ""));
		param.put("age", String.valueOf(preferences.getInt("age", 0)));
		return param;
	}
}


布局效果:

保存在ddd.xml中的数据:


本文转载自:http://blog.csdn.net/bq1073100909/article/details/37927397

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
SharePreference保存对象与集合

转载https://blog.csdn.net/qq_21937107/article/details/79735236 在Android中我们经常需要持久化保存数据,这时可以使用文件,SharePreference,以及SQLite等。如果我想保存一个对象呢?有...

sinat_17775997 ⋅ 04/23 ⋅ 0

android中context及全局变量小析

今天在研究context的时候,对application和activity context有了一定的了解,下面是从网上复制过来的资料, Application context和Activity context的区别: 这是两种不同的context,也是最常...

迷途d书童 ⋅ 2012/03/30 ⋅ 0

Windows Phone 7 - 独立存储空间

在Android 里面我们要快速保存用户的设置或者游戏进行的数据,我们通常全使用SharePreference 这个类来进行操作,另外Android 还提供了一系列继承自SharePreference 的组件提供我们快速保存用...

阿酷 ⋅ 2011/12/29 ⋅ 0

android成长日记 11.详细学习了数据存储相关基础知识

其实很简单,数据存储分为三种,分别是文件存储,sharepreference.和数据库存储.下面来一一介绍. 文件存储,就是利用java中的输入输出流,把要存储的内容以文件的形式保存在手机中,它就仅仅是你写...

康康渐渐 ⋅ 2016/03/17 ⋅ 0

Android P Beta!您想要知道的所有更新内容都在这里

I/O 大会的第一天,我们公布了下一个版本的 Android,也就是 Android P 的 beta 版本。Android P 将 AI 定位为操作系统的核心,并侧重于提供智能且简洁的体验。让我们一起来了解下这个版本带...

谷歌开发者 ⋅ 05/10 ⋅ 0

安卓应用安全指南 4.6.2 处理文件 规则书

安卓应用安全指南 4.6.2 处理文件 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 遵循以下规则: 4.6.2.1 文件原则上必须创建...

apachecn_飞龙 ⋅ 03/22 ⋅ 0

Android_6.数据存储1_文件存储

本文是以Android Studi为开发工具,<> 为学习指导书籍的学习记录 6.1 数据的持久化技术 数据持久代就是指那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据...

橄榄工作室 ⋅ 05/22 ⋅ 0

Android Studio 3.2新功能特性

android studio3.2预览版本已经发布了,下面这些功能在最新的版本已经提供,但可能尚未在测试版本中发布渠道中提供。 什么是新的助理 Android Studio 3.2有一个新的Assistant面板,可以通知您...

我就是马云飞 ⋅ 06/14 ⋅ 0

Android 面试技能树梳理

相信大家都有面试的经历,相对比面试官的问的一些问题其实都是基础的知识,但就是一些基础的知识我们也不是很完美的回答出来,我们也知道现在的开发人员很多,一家公司一个岗位就会有很多的开...

liu3364575 ⋅ 05/05 ⋅ 0

AndroidThings之基础一 基本概念

转载自:https://blog.csdn.net/weixin41636248/article/details/79069994 Android Things是什么 一句话说,AndroidThings就是让开发者可以使用Android开发工具开发嵌入式设备。 If you can...

qq_28831197 ⋅ 05/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 30分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 32分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 37分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 40分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 43分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 44分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 47分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 50分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 50分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 51分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部