【问题标题】:AspectJ aspect for OnItemClickListener.onItemClickOnItemClickListener.onItemClick 的 AspectJ 方面
【发布时间】:2013-09-15 21:54:15
【问题描述】:

我想知道您是否知道如何编写在 Android 的 OnItemClickListener.onItemClick 方法执行后执行的 AspectJ 建议。

我尝试了after(View view) : execution(void OnItemClickListener+.onItemClick(AdapterView, View, int, long)) && args(view),但 AspectJ 抱怨“不能使用参数化类型模式来声明执行切入点表达式的类型(改用原始类型)”,特别是关于执行部分。

如果我将建议更改为execution(void *.onItemClick(AdapterView, View, int, long)),则建议不会应用。

有什么想法吗?

谢谢, 西尔维

【问题讨论】:

  • 找到解决办法:after(AdapterView<?> parent, View view, int a, long b) : execution(void AdapterView.OnItemClickListener+.onItemClick(AdapterView<?>, View, int, long)) && args(parent, view, a, b)

标签: android aspectj


【解决方案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) {
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多