Аспект AspectJ для OnItemClickListener.onItemClick

Мне было интересно, есть ли у вас идеи о том, как написать совет AspectJ, который выполняется после выполнения метода Android OnItemClickListener.onItemClick.

Я пробовал after(View view) : execution(void OnItemClickListener+.onItemClick(AdapterView, View, int, long)) && args(view), но AspectJ жалуется на то, что «не может использовать шаблоны параметризованного типа для объявляющего типа выражения pointcut выполнения (вместо этого используйте необработанный тип)», особенно в части выполнения.

Если изменить совет на execution(void *.onItemClick(AdapterView, View, int, long)), то совет не применяется.

Любые идеи?

Спасибо, Сильвиу.


person silviu    schedule 01.04.2012    source источник
comment
Нашел решение: after(AdapterView<?> parent, View view, int a, long b) : execution(void AdapterView.OnItemClickListener+.onItemClick(AdapterView<?>, View, int, long)) && args(parent, view, a, b)   -  person silviu    schedule 02.04.2012


Ответы (1)


Обработка дженериков в Aspect4j была введена с помощью:

Затем, если ваш проект это позволяет, вы можете обойти эту проблему, обновив ее до последней версии. С maven, обновление до

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.4</version>
</plugin>

решил проблему.

Затем я использую

pointcut OnClickListener_onClick(View v) :
    execution(void OnClickListener.onClick(View)) && args(v);

after(View v) : OnClickListener_onClick(v) {
    ...
}
person blacelle    schedule 15.09.2013