###前提・実現したいこと
Android Studio でユーザーが指定した複数の画像を
Realmで保存したいと思ってます。
しかし、複数画像を選択しても最初に選んだ1枚しか保存されていません。
###該当のソースコード
java
1 private void pickImage(){ 2 Intent intent = new Intent(); 3 intent.setType("image/*"); 4 intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 5 intent.setAction(Intent.ACTION_GET_CONTENT); 6 startActivityForResult(Intent.createChooser( 7 intent, "画像を選択します"),REQUEST_CODE); 8 } 9 10 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 11 if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 12 if (data.getData() != null) { 13 // 単一の選択処理 14 try { 15 Uri uri = data.getData(); 16 InputStream in = getContentResolver().openInputStream(uri); 17 Bitmap img = BitmapFactory.decodeStream(in); 18 in.close(); 19 // 選択した画像を表示 20 mphotoImage.setImageBitmap(img); 21 } catch (FileNotFoundException e) { 22 e.printStackTrace(); 23 } catch (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 28 else { 29 // 複数選択の処理 30 ClipData clipData = data.getClipData(); 31 for (int i = 0; i < clipData.getItemCount(); i++) { 32 // i に対するビューを設定 33 ImageView targetView = null; 34 switch (i) { 35 case 0: 36 targetView = mphotoImage; 37 break; 38 default: 39 break; 40 } 41 // ビューに画像を設定 42 if (mphotoImage != null) { 43 try { 44 ClipData.Item item = clipData.getItemAt(i); 45 Uri uri = item.getUri(); 46 InputStream in = getContentResolver().openInputStream(uri); 47 Bitmap img = BitmapFactory.decodeStream(in); 48 in.close(); 49 // 選択した画像[i]を表示 50 mphotoImage.setImageBitmap(img); 51 } catch (FileNotFoundException e) { 52 e.printStackTrace(); 53 } catch (IOException e) { 54 e.printStackTrace(); 55 } 56 } 57 } 58 } 59 } 60 } 61//ボタン押したら保存する処理 62public void onSavedTappedButton (View view) { 63 mRealm.executeTransaction(new Realm.Transaction() { 64 @Override 65 public void execute(Realm realm) { 66 Number maxId = realm.where(SlideshowModel.class).max("id"); 67 long nextId = 0; 68 if (maxId != null) nextId = maxId.longValue() + 1; 69 SlideshowModel slideshowModel = realm.createObject(SlideshowModel.class, new Long(nextId)); 70 slideshowModel.setTitle(mTitleEdit.getText().toString()); 71 72 BitmapDrawable bitmap = 73 (BitmapDrawable) mphotoImage.getDrawable(); 74 byte[] bytes = MyUnits.getByteFromImage 75 (bitmap.getBitmap()); 76 if (bytes != null && bytes.length > 0) { 77 slideshowModel.setImage(bytes); 78 } 79 } 80 }); 81 Toast.makeText(this,"追加しました!",Toast.LENGTH_LONG).show(); 82 finish(); 83 }
###試したこと
画像を1枚取り込むことはできていると思います。
しかし、複数画像を取り込んで保存ができていません。
どうコードを直せばよいのでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 3.0.0
実機はGalaxyS6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。