エミュレータ起動時に表示された画像に対して
ギャラリーから読み込んだ画像を上書きするように表示したいのですがうまく動きません。
ソースコード上にエラー表示はないのですが、起動すると「問題が発生したため・・・」
と表示されてしまいます。
しかし自分の知識では、どこがダメなのかわかりません
何方かご教示ください。
以下は問題のソースコードです。
##ソースコード
public class MainActivity extends AppCompatActivity {
private static final int RESULT_PICK_IMAGEFILE = 1000; ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button1); //読み込み Bitmap bmp1 = BitmapFactory.decodeResource( MainActivity.this.getResources(), R.drawable.gazou ); ((ImageView) findViewById(R.id.imageView)).setImageBitmap(bmp1);
/////////////読み込みボタン///////////
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view1) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
//onActivityResultを起動 startActivityForResult(intent, RESULT_PICK_IMAGEFILE); } });
/////////////////////////////////////
} @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { if (requestCode == RESULT_PICK_IMAGEFILE && resultCode == Activity.RESULT_OK) { if (resultData.getData() != null) { ParcelFileDescriptor pfDescriptor = null; try { Uri uri = resultData.getData(); pfDescriptor = getContentResolver().openFileDescriptor(uri, "r"); if (pfDescriptor != null) { FileDescriptor fileDescriptor = pfDescriptor.getFileDescriptor(); Bitmap bmp2 = BitmapFactory.decodeFileDescriptor(fileDescriptor); pfDescriptor.close(); ((ImageView) findViewById(R.id.imageView)).setImageBitmap(bmp2); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (pfDescriptor != null) { pfDescriptor.close(); } } catch (Exception e) { e.printStackTrace(); } } } } }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。