1

私はこれをやろうとしています:

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

    if (requestCode == 1 && 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();
        Bitmap bmp = BitmapFactory.decodeFile(picturePath);
        b[1].setCompoundDrawablesWithIntrinsicBounds(null, new BitmapDrawable(bmp), null, null);
}

しかし、それは何があってもイメージを設定しません。ボタンの代わりにイメージボタンを使用したり、次を使用したりするなど、いくつかの異なる方法も試しました。

imageButton.setImageBitmap(bmp)

ギャラリーが正常に開き、コールバックが onActivityResult(...) になりますが、ボタンに画像が表示されません。ボタンの配列があります。

4

1 に答える 1

0

早速テストしてみました。次のコードは私にとってはうまくいきます。それでも画像を設定できない場合は、レイアウトに問題があるかどうかを確認します (つまり、画像は設定されていますが、表示する余地がありません)。

activity_main.xml には、match_parent であるメイン レイアウト内に、wrap_content に設定された ImageButton だけがあります。

public class MainActivity extends Activity {

    ImageButton imgButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgButton = (ImageButton) findViewById(R.id.imgButton);

        imgButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("image/*");

                startActivityForResult(intent, 0);
            }
        });
    }

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

        if(requestCode == RESULT_CANCELED) return;

        ParcelFileDescriptor fd;
        try {
            fd = getContentResolver().openFileDescriptor(data.getData(), "r");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return;
        }

        Bitmap bmp = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());

        imgButton.setImageBitmap(bmp);
    }   
}
于 2012-08-29T20:26:10.743 に答える