android之sharedPreferences保存数据文件详细案例

sharedPreferences(偏好参数保存)

案例效果图:

首先,编写界面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="姓名:" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/name"
        android:ems="10"
        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/age"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="22dp"
        android:text="年龄" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/age"
        android:layout_marginTop="28dp"
        android:ems="10"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/editText2"
        android:onClick="save"
        android:text="保存参数" />

</RelativeLayout>

 
然后,在主函数中获取编写功能代码:

import com.example.service.PreferencesService;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
private EditText nameText;
private EditText ageText;
private PreferencesService service;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
                //获取输入文本框editText1和editText2
                nameText=(EditText)this.findViewById(R.id.editText1);
		ageText =(EditText)this.findViewById(R.id.editText2);
		service=new PreferencesService(this);
	}
	        //保存的方法save()
	public void save(View v){
               //从输入框获取数据
                String name=nameText.getText().toString();
		String age= ageText.getText().toString();
		service.save(name,Integer.valueOf(age));
		Toast.makeText(getApplicationContext(),R.string.success,1).show();
	}
	@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;
	}

}
在上面的方法中,需要一个类PreferencesService实现保存的功能:

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

public class PreferencesService {
	//引入上下文对象
	private Context context;
	//通过构造器传进来
	public PreferencesService(Context context) {
		super();
		this.context = context;
	}
	/*保存参数
	 * name 姓名
	 * age  年龄
	 * */
	public void save(String name, Integer age) {
		// TODO Auto-generated method stub
		//getSharedPreferences()中的两个参数,前一个是用于指定文件名的,不需要加后缀;后一个是用于指定操作权限
		SharedPreferences preference=context.getSharedPreferences("baocunwenjain", context.MODE_PRIVATE);
		//取得编辑器对象然后往preference里存数据
		Editor editor=preference.edit();
		//将name和age两个内容放于内存中(name和age可自定义名字)
		editor.putString("name", name);
		editor.putInt("age", age);
		//一定不要忘了把数据提交回文件中
		editor.commit();
	}
 }
注意:在编写过程中,我们可以把参数存在String中:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">sharedPreferences</string>
    <string name="action_settings">Settings</string>
    <string name="success">保存完成</string>

</resources>

这样,就完成了手机对数据的保存了。

效果:




现在要在以上功能上,增加在输入框回显上一次输入文本的数据,则需要做如下改动:

在类PreferencesService中加入如下代码:

/*获取各项配置参数*/
	public Map<String, String> getPreferences(){
		Map<String, String> params=new HashMap<String, String>();
		//取出之前保存数据的文件“baocunwenjain”
		SharedPreferences preference=context.getSharedPreferences("baocunwenjain", context.MODE_PRIVATE);
		preference.getString("baocunwenjain", "");
		params.put("name", preference.getString("name", ""));
		params.put("age", String.valueOf(preference.getInt("age", 0)));
		return params;
	}

再在MainActivity中onCreate(Bundle savedInstanceState) 方法中加入:

//取得各项参数
		Map<String, String> params=service.getPreferences();
		//取得各项参数后将数据填充给输入框
		nameText.setText(params.get("name"));
		ageText .setText(params.get("age"));

这样,在打开界面时就会回显出上一次输入的数据了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值