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

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


转载于:https://my.oschina.net/zjcx/blog/679557

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值