У меня есть глобальная переменная byte [] byteArr; , в которую я хочу сохранить значение bytearray при нажатии на изображение и установить значение после TakeImage (img_view); метод в ed [finalI] .setText (bytearray); Этот код ниже приведен выше onCreate
private Bitmap global_bitmap;
Этот код ниже находится в onCreate , из которого при нажатии на него появляется опциявыбрать галерею
final XEditText ed[] = new XEditText[arraylist.size()];
final XImageView xImageViews[] = new XImageView[arraylist.size()];
for (int i = 0; i < arraylist.size(); i++) {
ed[i] = new XEditText(this);
xImageViews[i] = new XImageView(this);
ed[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TakeImage(img_view);
xImageViews[finalI1].setImageBitmap(global_bitmap);
ed[finalI1].setText(global_bitmap.toString());
}
});
}
Этот метод, который я вызываю из oncreate
public void TakeImage(final ImageView imageview) {
AlertDialog.Builder builderimage = new AlertDialog.Builder(JSON_Form_Activity.this);
builderimage.setTitle("Choose Image");
builderimage.setPositiveButton("Gallery", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
}
});
builderimage.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builderimage.show();
}
После этого есть методы для onActivityResult, как показано ниже
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == PICK_IMAGE) {
Uri uri = data.getData();
try {
img_view.setVisibility(View.VISIBLE);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byteArr = stream.toByteArray();
Path_Image_model path_image_model = new Path_Image_model();
path_image_model.setPath(byteArr.toString());
Log.d(TAG, "===byteArr_PickImage==" + byteArr);
img_view.setImageBitmap(bitmap);
global_bitmap=bitmap;
resizedFile = new File(uri.getPath());
Log.d(TAG, "===FileImage==" + resizedFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
public String getRealPathFromURI(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
На первомИдет, он показывает мне нулевое значение, а на втором шаге он показывает одно предыдущее значение. Я хочу, чтобы реальное значение global_bitmap выбранного изображения из галереи при каждом клике img_btn.setOnClickListener