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ブロックで囲って下さい。
これでコンパイルエラーは消えるはずです。
MainActivity.java
@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);
}
}
}
転載ここまで
既にご購入いただいていた方には、ご迷惑をおかけしました。申し訳ありませんでした。
ご報告いただいた読者様、ありがとうございました。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス



