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

来源:互联网 发布:手机淘宝删不了评价 编辑:程序博客网 时间:2024/05/29 13:28

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的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;@Overrideprotected 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"));}@Overridepublic 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中的数据:


0 0