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、ユーザーが背景を設定したかどうかを示す flag(boolean var) を sharedpreference に含めることができますか? また、ユーザーが背景を設定した場合は、画像のパスを sharedpreference に保存できます。したがって、アクティビティが onCreate() を開始するたびに。共有設定からフラグを確認し、共有設定に保存されている画像パスを使用して背景を設定します。

また、私は matheszabi に同意します。Android のライフサイクルについてもっと知る必要があります。

于 2012-09-11T21:23:45.660 に答える
0

あなたが初心者の場合、「ノウハウ」に感謝しないでしょうが、おそらくこれに基づいて、誰かがあなたのために 100% 動作するコードを作成し、コピーして貼り付ける準備ができているでしょう。

ただし、アプリから「戻る」と、背景はデフォルトに戻ります。

これは、Activity Lifecycle メソッドを知らないためです。保存した背景を OnCreate で再度読み込む必要があります。アクティビティのライフサイクル メソッドについては、こちらをご覧ください。

それが誰かに役立つことを願っています。

于 2012-09-11T21:21:45.773 に答える