2011-01-26 9 views
1

У меня есть задача asynch с моим приложением, которое идет на сайт, захватывает результаты из API и добавляет несколько интерактивных текстовых просмотров в существующий LinearLayout.Запуск за пределами деятельности

Однако я хочу, чтобы иметь возможность запускать новое действие при щелчке по тексту. Это невозможно с классом asynch, определенным в отдельном файле, было бы проще определить его как встроенный класс в рамках действия?

ответ

3

Вы всегда можете передать контекст вашему классу async.

Лучшим подходом было бы иметь обратные вызовы (слушатели) в вызывающем классе для асинхронного вызова.

+0

Это, вероятно, лучшее решение проблемы. Однако я немного обманул и включил класс в свою деятельность. – purserj

1

Один из подходов состоит в том, чтобы раздуть ваши текстовые элементы из XML-файла, объявляющего атрибут onClick, именования метода, определенного в вашей деятельности.

0

Не используйте контекст как активность! В любом случае вы, вероятно, получите сообщение о литье. Вместо этого, вы можете передать свою деятельность в качестве параметра функции, например:

public void function(Activity act) 
{ 
    Intent intent = new Intent(act, newActivity.class); 
    act.startActivity(intent); 
} 

Или перегрузить конструктор принимает активность в качестве параметра. Но я настоятельно рекомендую вам проверить код. Если вы вызываете какое-либо действие, вы, вероятно, должны быть в другом, вы не согласны? Но, я знаю, что иногда нам приходится делать несколько уступок, чтобы все работало правильно. Поэтому используйте его с умом.

Смежные вопросы