Android 使用SharedPreferences进行数据存储和读取数据

/* 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下: SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "传智播客"); editor.putInt("age", 4); editor.commit();//提交修改 生成的itcast.xml文件内容如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">传智播客</string> <int name="age" value="4" /> </map> 因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。 另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。 */

 

Android 使用SharedPreferences进行数据存储和读取数据_第1张图片

 

 

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/name" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/age" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/age" android:numeric="integer" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button" /> </LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">网名</string> <string name="app_name">软件参数设置</string> <string name="age">年龄</string> <string name="button">保存应用参数</string> <string name="fail">保存应用参数失败!</string> <string name="succss">保存应用参数成功!</string> </resources>

 

package com.zyq.preferences; import com.zyq.service.PreferencesService; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText nameText; private EditText ageText; private PreferencesService service; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); service=new PreferencesService(this); nameText=(EditText)this.findViewById(R.id.name); ageText=(EditText)this.findViewById(R.id.age); Button button=(Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String name=nameText.getText().toString().trim(); int age=new Integer(ageText.getText().toString().trim()); try { System.out.println(name+"**********"); System.out.println(age+"**********"); System.out.println(service+"**********"); service.save(name, age); Toast.makeText(MainActivity.this, R.string.succss, 1).show(); } catch (Exception e) { Toast.makeText(MainActivity.this, R.string.fail, 1).show(); e.printStackTrace(); } } }); } }

 

package com.zyq.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) { this.context = context; } /** * 实现应用参数保存 * @param name * @param age * @throws Exception */ public void save(String name,int age) throws Exception { System.out.println(context+"*****************"); SharedPreferences preferences=context.getSharedPreferences("zyq", Context.MODE_PRIVATE); Editor editor=preferences.edit(); editor.putString("name", name); editor.putInt("age", age); editor.commit(); } /** * 实现应用参数提取 * @return * @throws Exception */ public Map<String, String> getPreferences() throws Exception { SharedPreferences preferences=context.getSharedPreferences("zyq", Context.MODE_PRIVATE); Map<String, String> result=new HashMap<String, String>(); result.put("name", preferences.getString("name", "")); result.put("age", String.valueOf(preferences.getInt("age", 18))); return result; } }

 

 

你可能感兴趣的:(exception,android,String,layout,存储,encoding)