Android数据存储方式(二)SharedPreferences(偏好参数保存)
16lz
2021-01-24
本篇来介绍一下Android数据存储的第二中方式:SharedPreferences,这种方式在保存软件的各项参数时应用最广泛,一般采用.xml文件来进行存放。
实现的简单界面如下:
在Activity的子类中,我们可以通过两种方式来获取
第一种是:
getPreferences(MODE_PRIVATE); //这种方式默认采用所在的类名作为xml文件的名称
第二种是:
getSharedPreferences("preferencesFile", Context.MODE_PRIVATE); //我们可以指定参数保存文件的文件名称
本篇中采用第二种方式在service对象中指定保存的文件名称。
工程目录结构:
源代码:
main.xml
<?xml version="1.0" encoding="utf-8"?><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/username" /> <EditText android:id="@+id/name" android:layout_width="fill_parent" android:singleLine="true" android:layout_height="wrap_content"/> <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:numeric="integer" android:singleLine="true" android:layout_height="wrap_content"/> <Button android:id="@+id/save" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/save" android:onClick="save"/></LinearLayout>
Strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">软件参数设置</string> <string name="username">姓名</string> <string name="age">年龄</string> <string name="save">保存参数</string></resources>
MainActivity.java
package com.preferences.activity;import java.util.Map;import com.preferences.service.PreferencesService;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {private EditText name;private EditText age;private PreferencesService service; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name = (EditText)findViewById(R.id.name); age = (EditText)findViewById(R.id.age); service = new PreferencesService(MainActivity.this); //打开时读取保存的参数 Map<String,String> params = service.getPreferences(); name.setText(params.get("username")); age.setText(params.get("age")); } public void save(View v){ String userName = name.getText().toString(); int userAge = Integer.parseInt(age.getText().toString()); service.save(userName, userAge); Toast.makeText(MainActivity.this, "保存成功", 1).show(); }}
PreferencesService.java
package com.preferences.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(Context context) {super();this.context = context;}/** * 保存参数 * @param name 姓名 * @param age 年龄 */public void save(String name,int age){SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();editor.putString("username", name);editor.putInt("age", age);//目前是保存在内存中,还没有保存到文件中editor.commit();//数据提交到xml文件中}/** * 获取各项配置参数 * @return params */public Map<String,String> getPreferences(){SharedPreferences sharedPreferences = context.getSharedPreferences("itcastPreference", Context.MODE_PRIVATE);Map<String,String> params = new HashMap<String, String>();params.put("username", sharedPreferences.getString("username", ""));params.put("age", String.valueOf(sharedPreferences.getInt("age", 0)));return params;}}
当我们点击保存参数按钮之后,数据会保存到 /data/data/ [packagename] /shared_prefs目录下:
更多相关文章
- 设置Activity大小不再全屏原理
- Your project contains error(s)... 如何解决?
- 编程总结:Android(安卓)读写文件
- Java乔晓松-android中的手势识别的详解
- Android系统集成第三方pre-build库和程序(转)
- 8.16 提炼参数对象
- 详解Android(安卓)中AsyncTask 的使用
- android PreferenceActivity结合PreferenceFragment实现参数设置
- Android(安卓)SQLite使用SQLiteOpenHelper类对数据库进行操作