【发布时间】:2011-12-05 12:11:19
【问题描述】:
我想使用 SharedPreference 在 android 中保存图像。我有两个活动类,当我单击第一个活动的按钮时,它将调用第二个活动,第二个活动在列表视图中显示我的首选名称,并将 android 壁纸重置为我设置为首选壁纸的图像在第一个活动中。
第二个活动的代码是:
public class PreferencesActivityTest extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString("PREF_USERNAME", "nothing");
String wallPaper = myPrefs.getString("PREFS_NAME", null);
if(wallPaper != null) {
try {
Bitmap bm = BitmapFactory.decodeFile("/data/misc/wallpaper/"+wallPaper);
Log.d(getClass().getSimpleName(),"Wallpaper name is: "+ wallPaper);
setWallpaper(bm);
Toast.makeText(this, "Wall paper has been changed." +
"You may go to the home screen to view the same", Toast.LENGTH_LONG).show();
}
catch (FileNotFoundException fe){
Log.e(getClass().getSimpleName(),"File not found");
} catch (IOException ie) {
Log.e(getClass().getSimpleName()," 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));
}
第一个活动调用第二个活动,但它没有调用if(wallPaper != null){}
为什么它不起作用?
【问题讨论】:
-
您之前是否使用
SharedPreferences.Editor设置了一个名为"PREFS_NAME"的首选项字符串(并确保您调用了commit()?为什么要使用MODE_WORLD_READABLE?是否允许其他应用程序使用您的偏好? -
是的,我已经在我的第一个活动课程中声明了所有这些。还是不行。
标签: android