程序员人生 网站导航

android小功能实现之简单数据持久化保存(SharedPreferences)

栏目:综合技术时间:2015-04-08 08:40:20


为了保存1些简单的配置,类似iOS的NSUserDefault和cocos2dx的CCUserDefault,Android提供了SharedPreferences。


1 布局
先看效果图:




打开main.xml修改内容以下:
<?xml version="1.0" encoding="utf⑻"?> <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/input_name" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/input_name" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/input_age" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:id="@+id/input_age" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_save" android:onClick="save" android:id="@+id/button_save"/> </LinearLayout>


2 定义字符串
打开strings.xml添加内容以下:
<string name="input_name">姓名</string> <string name="input_age">年龄</string> <string name="button_save">保存参数</string> <string name="success">保存成功</string> <string name="fail">保存失败</string>


3 功能实现
修改MainActivity.java代码以下:
 
private EditText nameText; private EditText ageText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nameText = (EditText)this.findViewById(R.id.input_name); ageText = (EditText)this.findViewById(R.id.input_age); // 读取保存的值 //SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);// 默许使用类名作为文件名称 //SharedPreferences preferences = this.getSharedPreferences("preference", Context.MODE_PRIVATE); SharedPreferences preferences = getApplicationContext().getSharedPreferences("preference", Context.MODE_PRIVATE); String name = preferences.getString("name", "空"); String age = String.valueOf(preferences.getInt("age", 0)); nameText.setText(name); ageText.setText(age); } public void save(View v){ String name = nameText.getText().toString(); Integer age = Integer.valueOf( ageText.getText().toString() ); try{ // 第1个参数为文件名称,不能指定后缀名,第2个参数为文件操作模式 SharedPreferences preferences = getApplicationContext().getSharedPreferences("preference", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("name", name); editor.putInt("age", age); editor.commit(); Toast.makeText(getApplicationContext(),R.string.success, Toast.LENGTH_LONG).show(); } catch (Exception e){ Toast.makeText(getApplicationContext(),R.string.fail, Toast.LENGTH_LONG).show(); e.printStackTrace(); } }


4 运行结果

第1次运行结果如图:


输入内容,点击保存参数按钮,退出程序,再次打开,如图:



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐