Cause: inner class in hook class com/xx/lancettest/AopLancet must be public static
Zihao-Wu opened this issue · comments
zhiHaoWu commented
@TargetClass(value = "android.view.View",scope = Scope.SELF)
@Proxy(value = "setOnClickListener")
public void setOnClickListener(@Nullable View.OnClickListener l) {
System.out.println("setOnClickListener:"+l+" l=");
AopClickener a=new AopClickener() {
@Override
public void onClick(View v) {
System.out.println("onClick:"+v);
}
};
Origin.callVoid();
}
public static class AopClickener implements View.OnClickListener{
@Override
public void onClick(View v) {
}
}
我想代理所有点击事件,可是编译一直报这个错Cause: inner class in hook class com/xx/lancettest/AopLancet must be public static,我这已经是public static class 了呀,不过就算编译通过,好像也实现不了这种效果,因为Origin.callVoid();无法传参,那还怎么实现这种功能呢,我只知道反射可以。
zhiHaoWu commented
I got it .
public void setOnClickListener(@nullable View.OnClickListener l) {
l=new AopClickListener(l);
Origin.callVoid();
}
public static class AopClickListener implements View.OnClickListener{
View.OnClickListener l;
public AopClickListener(View.OnClickListener l) {
this.l = l;
}
@Override
public void onClick(View v) {
l.onClick(v);
System.out.println("setOnClickListener:"+v+" l="+l+" this="+this);
}
}