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);
     }
}

但是当您“退出”应用程序时,背景会恢复为默认值。我如何让这个背景选择坚持下去?

我已经看过这个:将位图保存到位置

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

4

2 回答 2

1

IMO,您可以在 sharedpreference 中使用标志(boolean var)来指示用户是否设置了任何背景?而且,如果用户设置了任何背景,那么您可以将图片路径保存在 sharedpreference 中。因此,每次您的活动开始时,哪个 onCreate()。您检查 sharedpref 中的标志并使用保存在 sharedpref 中的图片路径设置背景。

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

于 2012-09-11T21:23:45.660 回答
0

如果您是初学者,那么您不会欣赏“诀窍”,但也许有人会基于此为您编写 100% 工作代码,可以复制粘贴。

但是当您“退出”应用程序时,背景会恢复为默认值。

那是因为你不知道 Activity Lifecycle 方法。您应该在 OnCreate 中再次加载保存的免费。请在此处查看 Activity 生命周期方法。

希望它可以帮助某人。

于 2012-09-11T21:21:45.773 回答