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/name"
/>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
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:layout_height="wrap_content"
android:numeric="integer"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
/>
<Button
android:id="@+id/resume"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/resume"
/>
</LinearLayout>
</LinearLayout>
2:用到的字符串资源strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">软件参数保存</string>
<string name="name">网名</string>
<string name="age">年龄</string>
<string name="button">保存参数</string>
<string name="success">参数保存成功</string>
<string name="resume">恢复参数</string>
</resources>
3:界面如下图所示
程序界面如上图所示,用户在网名和年龄的文本框中输入相应的值,点击保存参数按钮,然后参数值就会保存到sharedpreferecs中,当两个EditText中没有值时,点击
恢复参数按钮会从sharedpreferences文件中读取name和age的值并显示在相应的控件上
4:MainActivity的内容
package cn.itcast.sharedpreferences;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
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 nameEditText = null;
private EditText ageEditText = null;
private Button saveButton = null;
private Button resumeButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nameEditText = (EditText) findViewById(R.id.name);
ageEditText = (EditText) findViewById(R.id.age);
saveButton = (Button) findViewById(R.id.button);
resumeButton = (Button) findViewById(R.id.resume);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_WORLD_READABLE);
Editor editor = sharedPreferences.edit();
editor.putString("name", nameEditText.getText().toString());
editor.putInt("age", new Integer(ageEditText.getText()
.toString()));
editor.commit();
Toast.makeText(MainActivity.this, R.string.success, Toast.LENGTH_LONG)
.show();
}
});
resumeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 20);
nameEditText.setText(name);
ageEditText.setText(String.valueOf(age));
}
});
}
}
5:生成的test.xml的内容为:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">zhangbo</string>
<int name="age" value="24" />
</map>
6:注意当从外部程序对sharedprefences文件进行读取时,需要使用的程序为:
public void testSharedPreference() {
try {
Context context = getContext().createPackageContext("cn.itcast.sharedpreferences",
Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreference = context.getSharedPreferences("test", Context.MODE_PRIVATE);
String name = sharedPreference.getString("name", "");
int age = sharedPreference.getInt("age", 0);
Log.i(TAG, "name:" + name + ", age:" + age);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}