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