###前提・実現したいこと
ActiveAndroidの保存項目にImageViewを追加したいです。
エラーの部分にカーソルを当てると出てくるIncompatible typeにRequired:Java.long.String Found:android.widget.ImageViewと出ますがこの意味がわかりません
★で囲んでいる部分が追記したコードです。
よろしくお願いします。
使用したサイト→https://akira-watson.com/android/activeandroid.html
###発生している問題・エラーメッセージ
不適合な型:ImageViewをStringに変換できません
###該当のソースコード
Java
1public class MainActivity extends AppCompatActivity { 2 3 private EditText editText1, editText2; 4 private Button buttonSave, buttonRead, buttonClear; 5 private TextView textView; 6 7 private Bitmap bitmap; 8 private ImageView imageView; 9 private Canvas canvas; 10 private int viewWidth, viewHeight; 11 12 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 19 20 21 // ウィンドウマネージャのインスタンス取得 22 WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); 23 // ディスプレイのインスタンスを生成 24 Display display = manager.getDefaultDisplay(); 25 Point point = new Point(); 26 // 画像サイズの取得 27 display.getSize(point); 28 viewWidth = point.x; 29 viewHeight = point.y; 30 31 32 Button button = (Button) findViewById(R.id.gazoo); 33 button.setOnClickListener(new View.OnClickListener() { 34 @Override 35 public void onClick(View v) { 36 // 画像が保存されてるフォルダにアクセス 37 Intent intent = new Intent(); 38 intent.setType("image/*"); 39 intent.setAction(Intent.ACTION_PICK); 40 // 起動先アクティビティからデータを返してもらいたい場合 41 startActivityForResult(intent, 0); 42 } 43 }); 44 45 46 editText1 = (EditText) findViewById(R.id.edit_text1); 47 editText2 = (EditText) findViewById(R.id.edit_text2); 48 49 buttonSave = (Button) findViewById(R.id.save_button); 50 buttonSave.setOnClickListener(new View.OnClickListener() { 51 @Override 52 public void onClick(View v) { 53 String text1 = editText1.getText().toString(); 54 String text2 = editText2.getText().toString(); 55 56 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 57 String backData = imageView.getDrawable().toString(); 58 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 59 60 if (text1 != null && text2 != null && backData !=null) { 61 saveData(text1, text2,backData); 62 // 次の入力のため空白とする 63 editText1.setText(""); 64 editText2.setText(""); 65 66 // ボタンがタップでkeyboard を閉じる 67 InputMethodManager inputMethodManager = 68 (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 69 inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0); 70 } 71 } 72 }); 73 74 textView = (TextView) findViewById(R.id.text_view); 75 imageView=(ImageView)findViewById(R.id.imageView); 76 77 buttonRead = (Button) findViewById(R.id.read_button); 78 buttonRead.setOnClickListener(new View.OnClickListener() { 79 @Override 80 public void onClick(View v) { 81 readData(); 82 } 83 }); 84 85 86 buttonClear = (Button) findViewById(R.id.clear_button); 87 buttonClear.setOnClickListener(new View.OnClickListener() { 88 @Override 89 public void onClick(View v) { 90 clearData(); 91 92 93 } 94 }); 95 96 } 97 98 @Override 99 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 100 super.onActivityResult(requestCode, resultCode, data); 101 // 画像を選択した時のみ実行 102 if (data != null) { 103 Uri uri = data.getData(); 104 try { 105 bitmap = loadImage(uri, viewWidth, viewHeight); 106 } catch (Exception e) { 107 e.printStackTrace(); 108 } 109 canvas = new Canvas(bitmap); 110 imageView.setImageBitmap(bitmap); 111 } 112 } 113 // 取得したURIを用いて画像を読み込む 114 private Bitmap loadImage(Uri uri, int viewWidth, int viewHeight) { 115 // Uriから画像を読み込みBitmapを作成 116 Bitmap originalBitmap = null; 117 try { 118 originalBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 119 } catch (FileNotFoundException e) { 120 e.printStackTrace(); 121 } catch (IOException e) { 122 e.printStackTrace(); 123 } 124 125 // MediaStoreから回転情報を取得 126 final int orientation; 127 Cursor cursor = MediaStore.Images.Media.query(getContentResolver(), uri, new String[]{ 128 MediaStore.Images.ImageColumns.ORIENTATION 129 }); 130 if (cursor != null) { 131 cursor.moveToFirst(); 132 orientation = cursor.getInt(0); 133 } else { 134 orientation = 0; 135 } 136 137 int originalWidth = originalBitmap.getWidth(); 138 int originalHeight = originalBitmap.getHeight(); 139 140 // 縮小割合を計算 141 final float scale; 142 if (orientation == 90 || orientation == 270) { 143 // 縦向きの画像は半分のサイズに変更 144 scale = Math.min(((float) viewWidth / originalHeight) / 2, ((float) viewHeight / originalWidth) / 2); 145 } else { 146 // 横向きの画像 147 scale = Math.min((float) viewWidth / originalWidth, (float) viewHeight / originalHeight); 148 } 149 150 // 変換行列の作成 151 final Matrix matrix = new Matrix(); 152 if (orientation != 0) { 153 //画像を回転させる 154 matrix.postRotate(orientation); 155 } 156 if (scale < 1.0f) { 157 // Bitmapを拡大縮小する 158 matrix.postScale(scale, scale); 159 } 160 161 // 行列によって変換されたBitmapを返す 162 return Bitmap.createBitmap(originalBitmap, 0, 0, originalWidth, originalHeight, matrix, 163 true); 164 } 165 private void saveData(String text1, String text2,String backeData) { 166 // 登録 167 Item item = new Item(); 168 item.keyData = text1; 169 item.valueData = text2; 170 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 171 item.backData = imageView; 172 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 173 item.save(); 174 175 // 読出し 176 readData(); 177 } 178 179 180 private void readData() { 181 String resText = ""; 182 183 // 全て取リだし 184 List<Item> list = new Select().from(Item.class).execute(); 185 for (Item i : list) { ★★★★★★ 186 resText += String.valueOf(i) + ": " + i.keyData + ", " + i.valueData + ","+ i.backData + "\n"; 187 } ★★★★★★ 188 189 textView.setText(resText); 190 } 191 192 private void clearData() { 193 List<String> tables = new ArrayList<>(); 194 195 SQLiteDatabase database = ActiveAndroid.getDatabase(); 196 Cursor cursor = database.rawQuery("SELECT * FROM sqlite_master WHERE type='table';", null); 197 cursor.moveToFirst(); 198 199 while (!cursor.isAfterLast()) { 200 String tableName = cursor.getString(1); 201 if (!tableName.equals("android_metadata") && 202 !tableName.equals("sqlite_sequence")) { 203 tables.add(tableName); 204 } 205 cursor.moveToNext(); 206 } 207 cursor.close(); 208 for (String tableName : tables) { 209 database.execSQL("DELETE FROM " + tableName); 210 } 211 212 } 213} 214
###Item.java
@Table(name="testDB")
public class Item extends Model{
@Column(name="data1") public String keyData; @Column(name="data2") public String valueData; @Column(name="data3") public String backData; public Item(){ super(); }
}
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報