Мне нужно вставить 2 изображения в одно занятие . Этот код (до того, как я добавлю регистр переключателя) работает, когда я просто вставляю 1 изображение. Но когда я изменил этот код, чтобы вставить 2 изображения, это не удалось. Проблема в том, что я могу выбрать изображение из галереи, но выбранное изображение не появится. В некоторых других вопросах, похожих на мои, я видел, что мало кто рекомендовал использовать случай переключения и 2 другой код запроса в onActivityResult, так что попробуйте. Может ли кто-нибудь помочь мне найти, что не так с кодом и как решить эту проблему? это правильно для кода, как это?
MainActivity
public class MainActivity extends AppCompatActivity {
ImageView mImageView, mImageView2;
Button mBtnAdd, mBtnList;
final int REQUEST_CODE_GALLERY = 999;
final int REQUEST_CODE_GALLERY2 = 666;
public static SQLiteHelper mSQLiteHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnAdd = findViewById(R.id.btnAdd);
mBtnList = findViewById(R.id.btnList);
mImageView = findViewById(R.id.imageView);
mImageView2 = findViewById(R.id.imageView2);
//creating database
mSQLiteHelper = new SQLiteHelper(this, "IMAGEDDB.sqlite", null, 1);
//creating table in database
mSQLiteHelper.queryData("CREATE TABLE IF NOT EXISTS tb_project(id_project INTEGER PRIMARY KEY AUTOINCREMENT, image BLOB, image2 BLOB)");
//select image by on imageview click
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCompat.requestPermissions(
MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_CODE_GALLERY
);
}
});
//select image by on imageview click
mImageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCompat.requestPermissions(
MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_CODE_GALLERY2
);
}
});
//add record to sqlite
mBtnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
mSQLiteHelper.insertData(
imageViewToByte(mImageView),
imageViewToByte2(mImageView2)
);
Toast.makeText(MainActivity.this, "Added successfully", Toast.LENGTH_SHORT).show();
//reset views
mImageView.setImageResource(R.drawable.addphoto);
mImageView2.setImageResource(R.drawable.ic_add_to_photos);
}
catch (Exception e){
e.printStackTrace();
}
}
});
//show record list
mBtnList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//start recordlist activity
startActivity(new Intent(MainActivity.this, RecordListActivity.class));
}
});
}
public static byte[] imageViewToByte(ImageView image) {
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
return byteArray;
}
public static byte[] imageViewToByte2(ImageView image2) {
Bitmap bitmap2 = ((BitmapDrawable)image2.getDrawable()).getBitmap();
ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
bitmap2.compress(Bitmap.CompressFormat.PNG, 100, stream2);
byte[] byteArray2 = stream2.toByteArray();
return byteArray2;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch(requestCode){
case REQUEST_CODE_GALLERY:
if (requestCode == REQUEST_CODE_GALLERY){
if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//gallery intent
Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, REQUEST_CODE_GALLERY);
}
else {
Toast.makeText(this, "Don't have permission to access file location", Toast.LENGTH_SHORT).show();
}
return;
}break;
case REQUEST_CODE_GALLERY2:
if (requestCode == REQUEST_CODE_GALLERY2){
if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//gallery intent
Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, REQUEST_CODE_GALLERY2);
}
else {
Toast.makeText(this, "Don't have permission to access file location", Toast.LENGTH_SHORT).show();
}
return;
}break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case REQUEST_CODE_GALLERY:
if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK){
Uri imageUri = data.getData();
CropImage.activity(imageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(16,9)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE){
CropImage.ActivityResult result =CropImage.getActivityResult(data);
if (resultCode == RESULT_OK){
Uri resultUri = result.getUri();
//set image choosed from gallery to image view
mImageView.setImageURI(resultUri);
}
else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
Exception error = result.getError();
}
}break;
case REQUEST_CODE_GALLERY2:
if (requestCode == REQUEST_CODE_GALLERY2 && resultCode == RESULT_OK){
Uri imageUri2 = data.getData();
CropImage.activity(imageUri2)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(16,9)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE){
CropImage.ActivityResult result =CropImage.getActivityResult(data);
CropImage.ActivityResult result2 =CropImage.getActivityResult(data);
if (resultCode == RESULT_OK){
Uri resultUri2 = result.getUri();
//set image choosed from gallery to image view
mImageView2.setImageURI(resultUri2);
}
else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
Exception error = result.getError();
}
}break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
activity_main
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/addphoto" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/imageView"
android:src="@drawable/ic_add_to_photos" />
<Button
android:id="@+id/btnAdd"
android:layout_below="@id/imageView2"
android:text="Save"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btnList"
android:layout_below="@id/btnAdd"
android:text="Show List"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
кстати, я использую библиотеку https://github.com/ArthurHub/Android-Image-Cropper для обрезки изображение.