android使用sharepreference保存用户操作数据
android使用sharepreference保存用户操作数据
指尖残雪 发表于1年前
android使用sharepreference保存用户操作数据
  • 发表于 1年前
  • 阅读 16
  • 收藏 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中的数据:


共有 人打赏支持
粉丝 8
博文 73
码字总数 0
×
指尖残雪
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: