2019/02/06
sponsored link
訂正
kindle本「Androidアプリを作ろう」の誤植を訂正しました。
該当箇所は、5-3-4 ギャラリーアプリを立ち上げて画像ファイルを取得して返ってくるのonActivityResultメソッドについての解説のところです。
訂正前の状態では例外が発生する処理をtry/catchブロックで囲んでおらず、コンパイルエラーになっていました。申し訳ありません。
新しいバージョンでは、例外について追記しております。
しかしながら、kindleは既に購入しているものはアップデートされない仕様になっています。古いバージョンを購入している方は、以下に追記箇所をそのまま掲載しますので、参考にして下さい。
転載ここから↓
例外について
このままでは、openInputStreamメソッドと、closeメソッドの部分がコンパイルエラーになっているかと思います。
コンパイルエラーの原因は、openInputStreamメソッドとcloseメソッドは例外を投げる可能性があるからです。
例外というのは、何か処理に問題があった場合にその処理を中断しそのエラーログを捕捉するための仕組みです。例外を投げる可能性がある処理を実行する際には、その処理をtry/catchブロックで囲う必要があります。
例外の仕組みについてはここでは詳しく触れませんが、コンパイルエラーを避ける為に問題の箇所をtryブロックで囲っておきます。
コンパイルエラーの赤線のところ(openInputStream)をクリックすると、左端に赤い電球マークが出現するので、それをクリックします。
そして、Surround with try/catchをクリックします。すると自動的に該当箇所をtry/catchブロックで囲ってくれます。同様にinputStream.close();もtry/catchブロックで囲って下さい。
これでコンパイルエラーは消えるはずです。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 0){ if(resultCode == Activity.RESULT_OK){ ContentResolver contentResolver = getContentResolver(); InputStream inputStream = null; try { inputStream = contentResolver.openInputStream(data.getData()); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap bitmap = BitmapFactory.decodeStream(inputStream); try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } imageView.setImageBitmap(bitmap); } } }
転載ここまで
既にご購入いただいていた方には、ご迷惑をおかけしました。申し訳ありませんでした。
ご報告いただいた読者様、ありがとうございました。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス