Фрагмент уничтожен при открытии явного намерения - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю простое приложение форума для пациентов и врачей, в котором пациент может публиковать вопросы, а врачи отвечают на них. Итак, я создал 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'
...