質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4715閲覧

android onActivityResultのintentがnullになってしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/12/18 06:10

編集2015/12/18 06:12

画像をアルバムから選択して、トリミングする際に下記のようなコードを書いたのですが、versionが19以下の時のif分の方に入ると、while(bitmajp == null)内のcatchに入り、エラーが出てしまいます。
その際に、二度onActivityResultに入るのですが、二度目のIntent dataの値がnullになってしまうのが原因かと思ったのですが、修正方法が分からず困っています。
教えていただければ幸いです!

""APP.java""
public static int REQUEST_GALLERY = 200;
public static int REQUEST_KITKAT_GALLERY = 300;
public static int REQUEST_CROP_PICK = 400;

""CameraActivity.java""
if (Build.VERSION.SDK_INT < 19){
intentAlbum = new Intent(Intent.ACTION_PICK);
intentAlbum.setAction(Intent.ACTION_GET_CONTENT);
intentAlbum.setType("image/*");
startActivityForResult(intentAlbum, APP.REQUEST_GALLERY);
} else {
intentAlbum = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intentAlbum, APP.REQUEST_KITKAT_GALLERY);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){ <-------二回目に入ってきた時にdataがnullになる
if (requestCode == APP.REQUEST_GALLERY||requestCode == APP.REQUEST_KITKAT_GALLERY) {
if (resultCode == RESULT_OK) {
try {
InputStream stream = getContentResolver().openInputStream(data.getDat a());
Bitmap bmp = BitmapFactory.decodeStream(stream);
stream.close();
Uri uri = data.getData();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(uri);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, APP.REQUEST_CROP_PICK);
} catch (Exception e) {

} } else if (resultCode == RESULT_CANCELED) { btnTake.setClickable(true); btnAlbum.setClickable(true); } } if(requestCode == APP.REQUEST_CROP_PICK) { Bitmap bitmap = null; int n =0; while (bitmap == null){ n++; try{ bitmap = data.getExtras().getParcelable("data"); }catch (java.lang.Exception e){ btnTake.setClickable(true); <---------catchに入ってエラーが出る btnAlbum.setClickable(true); return; } } cameraPreview.createView(bitmap); } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

・なぜ、2回onActivityResultが呼ばれているのかわかりません。
・resultCodeはどうなっていますか?NGであればnullが帰って来る可能性もあります。

また、コードはマークダウンして記述してください。

投稿2015/12/18 06:58

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問