У меня есть следующая проблема. В моем приложении я загружаю данные в AsyncTask. Проблема заключается в том, что пользователь теперь щелкает по значку, чтобы открыть навигационный ящик, и открывает еще один фрагмент, из которого происходит сбой приложения. Когда AsyncTask завершена, приложение не сбой. Проблема, с которой приходится сталкиваться, заключается в том, что при переключении фрагмента (фрагменты всегда одни и те же, только с другим содержимым, зависящим от элемента NavigationDrawer), приложение сбой.Приложение вылетает, когда пользователь меняет фрагмент во время AsyncTask
Я думаю, проблема в том, что задача async еще не закончена, я вызываю один и тот же фрагмент снова, чтобы отображать разные данные.
Итак, каким будет мой подход к этому? Использовать для каждого другого вида другой фрагмент? Я думал, что использовать один и тот же фрагмент каждый раз намного проще, поскольку он просто отображает разные данные, но структура, макет и т. Д. - все равно. Просто данные, которые он получает, различны.
Я также подумал о том, чтобы каким-то образом «заблокировать» пользователя от любых других действий во время асинтезы, но все же показать ему, что приложение обрабатывает. Но это не было бы определением AsyncTask.
Как вы к этому подходите? Используйте разные фрагменты для каждого другого дисплея? Или как? Блокировать как-нибудь? Если пользователь нажимает на элемент навигационного ящика, асинхронность должна остановить все его действия (если некоторые из них выполнены), а затем перезапустить выполнение всех действий. Есть ли способ сделать это?
Пожалуйста, обратите внимание, что фрагмент, где выполняются асинхронным и деятельность, где фрагменты называется в двух разных файлах
Ваша догадка правильная. Извините, я не могу показать код. Но я не думаю, что это было бы полезно, поскольку это просто когда назначено представление. Больше ничего. Поэтому я бы попытался отменить асинтаску? Как мне это сделать? Просто 'asynctask.cancel (true)'? – Musterknabe
Да, но проверьте, отменен ли он. Проверьте это http://stackoverflow.com/a/6053943/562840 – Mikel
Вот где начинается funpart. Я запускаю фрагмент, onCreate проверяет, отменена ли задача async раньше. Конечно, это не так, и поэтому он выполняет асинхронную задачу. Теперь, когда я нажимаю на элемент меню навигации, фрагмент запускается снова с нуля, а затем асинтеза не отменяется. Поэтому мне как-то придется отменить его из активности, где задача асинхронизации не найдена. Как это сделать/ – Musterknabe