Shared Preference是android的一种存储数据的方式,它采用以XML的方式存储。
Content.getSharedPreferences用于得到Shared Preference
这个示例中有2个Activity,一个是ManageSharedPerfs.java,用于把myname和wallpaper name存放到Shared Preference中,Activity中有一个Button,点击后会跳转到第二个Activity——ViewSharedPrefs.java,他用于把wallpaper name从Shared Preference中取出,根据名字得到要设置的背景图片,然后设置墙纸,同时把myname取出来显示在这个Activity中
ManageSharedPerfs.java
public class ManageSharedPerfs extends Activity {
private final String MY_NAME = "myname";
private final String MY_WALLPAPER = "wallpaper";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString(MY_NAME, "lyj");
prefsEditor.putString(MY_WALLPAPER, "hao.jpg");
prefsEditor.commit();
Button next = (Button) findViewById(R.id.next);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(ManageSharedPerfs.this, ViewSharedPrefs.class);
startActivity(intent);
}
});
Toast.makeText(this, R.string.toast, Toast.LENGTH_LONG).show();
}
}
ViewSharedPrefs.java
public class ViewSharedPrefs extends ListActivity {
private static final String LOG_TAG = ViewSharedPrefs.class.getSimpleName();
private final String MY_NAME = "myname";
private final String MY_WALLPAPER = "wallpaper";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString(MY_NAME, "nothing");
String wallPaper = myPrefs.getString(MY_WALLPAPER, null);
if (wallPaper != null) {
try {
Bitmap bm = BitmapFactory.decodeFile("/data/misc/" + wallPaper);
Log.d(LOG_TAG, "Wallpaper name is: " + wallPaper);
setWallpaper(bm);
Toast.makeText(this, "Wall paper has been changed." + "You may go to the home screen to view the wallpaper",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException fe) {
Log.e(LOG_TAG, "File not found");
} catch (IOException ie) {
Log.e(LOG_TAG, " IO Exception");
}
}
ArrayList<String> results = new ArrayList<String>();
results.add("Your Preferred name is: " + prefName);
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
}
}
main.xml
<?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/welcome"
/>
<Button
android:text="@string/button"
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_gravity="center_horizontal">
</Button>
</LinearLayout>