У меня есть фрагмент в приложении Photo. Когда пользователь редактирует фотографию,
- Я запускаю AsyncTask для сжатия изображения на заднем плане, которое возвращает сжатые байты изображения.
- В postExecute () я вызываю метод editComplete, который обновит мою модель данных сжатыми байтами изображений
- Как только это будет сделано, я вызываю getParentFragmentManager для popBackStack, чтобы удалить режим редактирования для режима галереи
Здесь при вызове getParentFragmentManager () я получаю IllegalStateException: «Fragment» + this + «не связан с менеджером фрагментов.»
My Fragment Asyn c task:
protected class CompressBitmapImageTask extends AsyncTask<Void, Void, byte[]>
{
private Bitmap editedImageBitmap;
private BitmapDownscale bitmapDownscale;
CompressBitmapImageTask(Bitmap editedImageBitmap, BitmapDownscale bitmapDownscale)
{
this.editedImageBitmap = editedImageBitmap;
this.bitmapDownscale = bitmapDownscale;
}
@Override
protected byte[] doInBackground(Void... params)
{
BitmapDownscale.BitmapDownscaleResult result = bitmapDownscale.downscaleFromBitmap(editedBitmap, true);
return result.bitmapBytes;
}
@Override
protected void onPostExecute(byte[] bytes)
{
onEditImageComplete(bytes);
}
}
protected void onEditImageComplete(@Nullable byte[] editedBitmapData)
{
if (editedBitmapData != null)
photoModel.editedBitmapData = editedBitmapData;
getParentFragmentManager().popBackStack();
}
Я получаю исключение при вызове getParentFragmentManager (). Я ссылался на соответствующий пост, Фрагмент MyFragment, не прикрепленный к Activity Но это связано с тем, что фрагмент не связан с Activity. Поэтому я не уверен, что добавление isAdded()
решит проблему в моем случае. В идеале, мне нужно убедиться, что fragManager не является нулевым, пока я пытаюсь открыть backStack (). Единственный метод, который делает это isStateSaved () в androidx.fragment.app.Fragment, но я не думаю, что это подходящий метод. Может ли кто-нибудь указать мне правильное направление?