Хотите сохранить изображение только один раз, но хранить изображение 3 раза в папке, все функции вызываются только один раз, но изображения хранятся 3 раза вместо одного.
private ImageChooserManager imageChooserManager;
private File mFileTemp;
Вот мой setOnClickListener
LinDriverImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// showchooseImagePopup(getActivity(), "user");
final MaterialSimpleListAdapter adapter = new MaterialSimpleListAdapter(new MaterialSimpleListAdapter.Callback() {
@Override
public void onMaterialListItemSelected(MaterialDialog dialog, int index, MaterialSimpleListItem item) {
if (index == 0) {
chooseImageFromGallery();
Log.d("imagechoser", "LinDriverImage");
imageStatus = "user";
materialDialog.dismiss();
}
if (index == 1) {
chooseImageFromCamera();
imageStatus = "user";
materialDialog.dismiss();
}
}
});
adapter.add(new MaterialSimpleListItem.Builder(ActivityDriverProfile.this)
.content("Gallery Image")
.icon(R.drawable.ic_add_a_photo_black_24dp)
.backgroundColor(Color.WHITE)
.build());
adapter.add(new MaterialSimpleListItem.Builder(ActivityDriverProfile.this)
.content("Capture Image")
.icon(R.drawable.ic_camera_alt_black_24dp)
.backgroundColor(Color.WHITE)
.build());
materialDialog = new MaterialDialog.Builder(ActivityDriverProfile.this)
.title("Choose option")
.adapter(adapter, null)
.show();
}
});
Я использую chooseImage для выбора изображения
private void chooseImageFromCamera() {
imageChooserManager = new ImageChooserManager(this, ChooserType.REQUEST_CAPTURE_PICTURE, "myfolder", true);
imageChooserManager.setImageChooserListener(ActivityDriverProfile.this);
try {
imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
Я думаю, что эти строки кода могут иметь какую-то проблему, но я не знаю, onImageChosen также вызывается только один раз.
@Override
public void onImageChosen(final ChosenImage chosenImage) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (chosenImage != null) {
isPicChange = "1";
mFileTemp = new File(chosenImage.getFileThumbnailSmall());
if (imageStatus.equals("user")) {
Picasso.with(ActivityDriverProfile.this).load(mFileTemp).transform(new CircleTransform()).resize(300, 300).centerCrop()
.skipMemoryCache().into(reviewUserImage);
}
if (imageStatus.equals("nicfront")) {
Picasso.with(ActivityDriverProfile.this).load(mFileTemp).resize(470, 300).centerCrop()
.skipMemoryCache().into(nicfront);
}
if (imageStatus.equals("nicback")) {
Picasso.with(ActivityDriverProfile.this).load(mFileTemp).resize(470, 300).centerCrop()
.skipMemoryCache().into(nicback);
}
}
}
});
}
@Override
public void onError(String s) {
}
private void chooseImageFromGallery() {
// int chooserType = ChooserType.REQUEST_PICK_PICTURE;
imageChooserManager = new ImageChooserManager(this, ChooserType.REQUEST_PICK_PICTURE, "myfolder", true);
imageChooserManager.setImageChooserListener(ActivityDriverProfile.this);
try {
imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && (requestCode == ChooserType.REQUEST_PICK_PICTURE || requestCode == ChooserType.REQUEST_CAPTURE_PICTURE)) {
imageChooserManager.submit(requestCode, data);
}
}