您的位置:首页 > 移动开发 > Android开发

android利用SharedPreferences来保存用户参数及读取

2013-08-25 09:39 609 查看
软件需求:用户输入姓名和年龄点击保存按钮将信息保存到xml中当再次登陆的时候输入的信息显示在文本框中

Activity文件

package com.example.shareperences;

import java.util.Map;

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

import com.example.service.PrefercesService;

public class MainActivity extends Activity {
private Button button;
private EditText name,age;
private PrefercesService prefercesService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button);
name=(EditText)this.findViewById(R.id.name);
age=(EditText)this.findViewById(R.id.age);
prefercesService=new PrefercesService(this);
Map<String,String> params=prefercesService.getPreferences();
name.setText(params.get("name"));
age.setText(params.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){
/*
* 如果想在Activity中得到SharedPreferences对象则可以用方法
* this.getPreferences(mode)这里只有一个参数 文件存储类型,此时文件的名字默认为
* 当前activity的名字 不包括包名
*/
String nameString=name.getText().toString();
String ageString=age.getText().toString();
prefercesService.save(nameString,Integer.parseInt(ageString));
Toast.makeText(MainActivity.this, R.string.success, Toast.LENGTH_LONG).show();
}

}


package com.example.service;

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

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

public class PrefercesService {
private Context context;
public PrefercesService(Context context) {
super();
this.context = context;
}
/**
* 保存参数
* @param name 姓名
* @param age  年龄
*/
public void save(String name, int age) {
//第一个参数 指定名称 不需要写后缀名 第二个参数文件的操作模式
SharedPreferences preferences=context.getSharedPreferences("itcast", Context.MODE_PRIVATE);
//取到编辑器
Editor editor=preferences.edit();
editor.putString("name", name);
editor.putInt("age", age);
//把数据提交给文件中
editor.commit();
}
/**
* 获取各项配置参数
* @return
*/
public Map<String,String> getPreferences(){
SharedPreferences pre=context.getSharedPreferences("itcast", Context.MODE_PRIVATE);
//如果得到的name没有值则设置为空 pre.getString("name", "");
Map<String,String> params=new HashMap<String,String>();
params.put("name", pre.getString("name", ""));
params.put("age", String.valueOf(pre.getInt("age", 0)));

return params;

}
}


布局文件注意button应该这样设置

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="@string/save"
android:onClick="save"
/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: