Я создаю простое приложение форума для пациентов и врачей, в котором пациент может публиковать вопросы, а врачи отвечают на них. Итак, я создал AskFragment, в котором пользователь заполняет форму и публикует ее. Я также реализую функцию загрузки изображения feature.ok, когда это явное намерение или локальное хранилище, открытое для получения фрагмента изображения, уничтожается. Вот проблема, с которой я сталкиваюсь
Это код, который я использую в MainActivity для установки фрагментов
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.home:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, new HomeFragment()).commit();
getSupportActionBar().setTitle("NewsFeed");
return true;
case R.id.unanswerd:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, new UnAnswerdQuestionFragment()).commit();
getSupportActionBar().setTitle("Un Answered");
return true;
case R.id.askQuestion:
if (!MainActivity.userType.equals("doctor")) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, new AskQuestionFragment()).commit();
getSupportActionBar().setTitle("Ask Question");
}else {
Toast.makeText(this, "doctor cannot post", Toast.LENGTH_SHORT).show();
}
return true;
case R.id.categories:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, new CategoryFragment()).commit();
getSupportActionBar().setTitle("Category");
return true;
case R.id.Mychats:
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, new MyChatsFragment()).commit();
getSupportActionBar().setTitle("My Chats");
return true;
}
return false;
}
И это код, которым я являюсь использование в AskFragmet для получения изображения из хранилища, а также обрезка его
public void openImage()
{
Log.i("openImage=","true");
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,IMAGE_REQUEST);
}
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==IMAGE_REQUEST && resultCode==RESULT_OK && data!=null) {
Log.i("request code==", String.valueOf(requestCode));
Uri imageUri = data.getData();
CropImage.activity(imageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(getContext(),AskQuestionFragment.this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
Log.i("crop : :","crop k bd ");
CropImage.ActivityResult result=CropImage.getActivityResult(data);
if(resultCode==RESULT_OK) {
uriPath = result.getUri();
set_post_image.setImageURI(uriPath);
File actualImage=new File(uriPath.getPath());
try {
Bitmap compressedImage = new Compressor(getContext())
.setMaxWidth(250)
.setMaxHeight(250)
.setQuality(75)
.setCompressFormat(Bitmap.CompressFormat.WEBP)
.setDestinationDirectoryPath(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES).getAbsolutePath())
.compressToBitmap(actualImage);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
compressedImage.compress(Bitmap.CompressFormat.JPEG, 50, baos);
final_image = baos.toByteArray();
Log.i("final image = ",final_image.toString());
} catch (IOException e) {
e.printStackTrace();
}
}else if(resultCode==CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
Exception error=result.getError();
Toast.makeText(getContext(),"Error",Toast.LENGTH_LONG).show();
}
}else{
Log.i("crop","else part chal raha hai");
}
}
Это зависимость, которую я использую для искажения изображения
implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.+'
implementation 'id.zelory:compressor:2.1.0'