Контекст хочет FLAG_ACTIVITY_NEW_TASK, но я уже установил этот флаг
Я создал общий повторно используемый класс для компании, над которой я работаю, для создания некоторых общих элементов интерфейса.
Класс принимает один параметр, как в конструкции: контекст приложения.
один из методов, ContentClickableRowWithIcon
позволяет вам передать намерение использовать его как действие click.
объявляет полное объявление метода:
public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, Intent i, final Boolean chooser)
этот последний атрибут используется в onClickEvent, чтобы определить, следует ли вызывать Chooser или просто перейти в намерение.
public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, Intent i, final Boolean chooser) {
LinearLayout ll = new LinearLayout(mContext);
// .. LinerLayout construction, has nothing to do with the action
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this is apparently getting ignored... (ps: i've tried i.setFlags as well)
final Intent intent = i;
ll.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(chooser)
mContext.startActivity(Intent.createChooser(intent, "Complete With...")); // crashes here with: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
else
mContext.startActivity(intent); // this works fine
}
});
return ll;
}
Как упоминалось в комментариях, в любое время, когда я не предоставляю возможность использовать выборщик, все работает отлично (все в этом списке получает новый флаг активности, хорошо осведомленный об этом и будет очищать, когда эта проблема будет выяснена)
В тот момент, когда я делаю это, выдается исключение:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
У меня закончились идеи...
///EDIT:: Стоит отметить, что при отладке атрибут flags в Intent устанавливается в 268435456
с addFlags и 268435456
с setFlags, когда он достигает времени, чтобы использовать намерение в действии onClick
Ответы
Ответ 1
Проблема исправлена, я думаю, что это просто сценарий "порядок работы"
что позволило этой вещи работать:
ll.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(chooser) {
Intent intent = Intent.createChooser(i, "Complete With");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
} else
mContext.startActivity(i);
}
});
также добавил "окончательный" модификатор к параметру в объявлении метода
public LinearLayout ContentClickableRowWithIcon(Drawable icon, String title, final Intent i, final Boolean chooser)
Ответ 2
На самом деле ваше исключение означает, что вы используете контекст отсутствия активности. его можно вызвать из контекста приложения. Убедитесь, что вы находитесь в контексте Activity, поскольку это не сервис