У меня есть задача asynch с моим приложением, которое идет на сайт, захватывает результаты из API и добавляет несколько кликабельных текстовых просмотров в существующий LinearLayout.
Однако я хочу иметь возможность запускать новое действие при щелчке по тексту. Это невозможно с классом asynch, определенным в отдельном файле, было бы легче определить его как встроенный класс в рамках действия?
Вы всегда можете передать контекст вашему классу async.
Лучшим подходом было бы иметь обратные вызовы (слушатели) в вызывающем классе для асинхронного вызова.
Один из подходов состоит в том, чтобы раздуть ваши текстовые элементы из XML файла, который объявляет атрибут onClick, именования метода, определенного в вашей деятельности.
Не используйте контекст как действие! В любом случае вы, вероятно, получите сообщение о литье. Вместо этого вы можете передать активность как параметр функции, например:
public void function(Activity act)
{
Intent intent = new Intent(act, newActivity.class);
act.startActivity(intent);
}
Или перегрузите конструктор, чтобы принять действие в качестве параметра. Но я настоятельно рекомендую вам проверить код. Если вы вызываете какое-либо действие, вы, вероятно, должны быть в другом, вы не согласны? Но, я знаю, что иногда нам приходится делать несколько уступок, чтобы все работало правильно. Поэтому используйте его с умом.