0

ユーザーの電話のギャラリーを開く意図を使用しましたが、選択した画像をアクティビティの壁紙として設定するか、電話の壁紙として設定するのではなく、アクティビティの ImageView に画像を設定する必要があります。誰かが私を助けることができますか?これまでに使用したコードは次のとおりです。画像を選択できますが、その後は何も起こりません。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Button chooseImg=(Button) findViewById(R.id.btnChooseImg);
    chooseImg.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent img=new Intent();
            img.setType("image/*");
            img.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser
                    (img, "Select Picture"),SELECT_PICTURE);

            Object tag=v.getTag();
            Integer rId=(Integer) tag;
            img.putExtra("bgImage", rId);



            try{
            imgLayout=(ImageView) findViewById(R.id.bgImg1);


            int imgId=img.getExtras().getInt("bgImage");
            imgLayout.setBackgroundResource(imgId);

            }
            catch(Exception e){
                Toast.makeText(getApplicationContext(), "nope", Toast.LENGTH_SHORT).show();
            }

        }
    });

}
4

1 に答える 1

2

このように onActivityResult を実装します

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

    if (requestCode == SELECT_PICTURE&& resultCode == RESULT_OK && data != null && data.getData() != null) {

        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            // Log.d(TAG, String.valueOf(bitmap));

            ImageView imageView = (ImageView) findViewById(R.id.yourimageview);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ボタンの背景を設定するには、このような BitmapDrawable を作成します

BitmapDrawable bdrawable = new BitmapDrawable(context.getResources(),bitmap);

setBackgroundDrawableレイアウトにはメソッドを使用できます

于 2016-08-28T12:01:40.703 に答える