Проблема в том, что вы делаете «новое намерение» дважды:
- Однажды здесь:
Intent intent = new Intent(Intent.ACTION_VIEW);
- Второй раз здесь:
context.startActivity(new Intent(context,ChapterActivity.class))
FLAG_ACTIVITY_NEW_TASK не устанавливается при запуске действия.Исправленная версия, в которой Intent создается только один раз, выглядит следующим образом:
Intent intent = new Intent(context, ChapterActivity.class))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Но ваша реальная проблема заключается в том, что вам нужно вызвать startActivity в контексте Activity.
getActivity().startActivity(new Intent(getActivity(), ChapterActivity.class));
Подробнее здесь: Как запустить действие из фрагмента?
То, что вы пытались сделать с FLAG_ACTIVITY_NEW_TASK, должно быть зарезервировано для редких случаев, например, когда вам нужно запустить действие из службы.Но нет необходимости или нежелательно устанавливать этот флаг при запуске Activity из контекста пользовательского интерфейса.
Вот почему предупреждения спрашивают:
Это действительно то, что вы хотите?
Установка специализированных флагов при запуске действия часто приводит к нежелательному поведению backstack / навигации.
Кроме того, я не вижу, находится ли ваш адаптер внутри действия или фрагмента.[Вы можете использовать «this» внутри Acitivity и getActivity () внутри Fragment]
Наконец, я не могу понять, как вы создаете адаптер, но то, как ваш код в настоящее время организован, вам нужно передать контекст Activityв адаптер для его работы.Из фрагмента:
adapter = new MyComicAdapter(getActivity(), list);
Из упражнения:
adapter = new MyComicAdapter(this, list);
Скорее всего, это предотвратит возникшее исключение.