2012-09-11 30 views
1

我已经问过,但我的理解略有增加。我已经想出了如何让用户在布局上选择自定义背景图片。我用这个:如何使背景图像持久

在我的onCreate方法:

Button player = (Button) setBg.findViewById(R.id.plBg); 

       player.setOnClickListener(new OnClickListener() { 
        public void onClick(View v) { 

         Intent i = new Intent(Intent.ACTION_PICK, 
           android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

         i.setDataAndType(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");          
         startActivityForResult(i, RESULT_LOAD_PLAYER); 

         setBg.dismiss(); 
        } 
       }); 

,并在我的onActivityResult方法:

@Override 
protected void onActivityResult(int requestCode, int resultCode, final Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

if (requestCode == RESULT_LOAD_PLAYER && resultCode == RESULT_OK && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     playerBg = (ImageView) findViewById(R.id.playerBg); 
     playerBg.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
     playerBg.setScaleType(ScaleType.CENTER_CROP); 
    } 
} 

但是当你回来'出来的应用程序,背景将恢复为默认值。我如何获得该背景选择?

我已经看这个:Save bitmap to location

但我有一个很难理解它。
我也尝试过将它保存在共享偏好中,但了解到这不是它们的用途。 我还是这个初学者。提前致谢。

+0

上面的代码是从什么方法来的? –

+0

对不起,这是在我的onActivityResult。我将编辑OP以使其更清晰 – Psest328

+1

为什么不在sharedpreference中有一个标志,表示用户设置了任何背景?而且,如果用户设置了任何背景,则可以将图片路径保存在sharedpreference中。所以,每次你的活动开始时。您从sharedpref检查标志,并使用保存在共享前缀中的图片路径设置背景。 – VendettaDroid

回答

1

国际海事组织,你可以在sharedpreference标志(布尔变量)表明用户设置任何背景或不是?而且,如果用户设置了任何背景,则可以将图片路径保存在sharedpreference中。所以,每次当你的活动开始onCreate()。您从sharedpref检查标志,并使用保存在共享前缀中的图片路径设置背景。

此外,我同意matheszabi,您需要了解更多关于android生命周期。

+0

我喜欢这个想法。生命周期我得到了。我是自学的,所以我正在转向更复杂的事情并打路障。 – Psest328

+0

我很高兴你喜欢它。 – VendettaDroid

+0

这对我来说是美丽的!谢谢! – Psest328

0

如果你是一个初学者,比你不了解“知道如何”,但也许基于这个有人会为你写一个100%的工作代码,这是准备复制粘贴。

但是当你退出应用程序时,后台将恢复为默认值 。

那是因为您不知道活动生命周期方法。 您应该在OnCreate中再次加载保存的免提。请查看here了解活动生命周期方法。

希望它有助于某人。

+0

我理解生命周期。我知道为什么它不会持续......但我无法弄清楚如何让它坚持下去。到目前为止,我已经完成了基本类型,例如字符串和整数,但是这会杀死我 – Psest328

+0

“您应该在OnCreate中再次加载保存的缓冲区” – 2012-09-11 21:28:11

+0

http://stackoverflow.com/questions/3740784/store-image- and-audio-file-in-android-internal-storage – 2012-09-11 21:30:23