我尝试通过创建扩展AppCompatButton的类来创建自定义按钮方法。我有定位按钮方法的工作方法
method = actClass.getMethod(methodName,View.class);其中actClass是调用按钮的活动的类。当我到达调用方法的代码时,我得到一个例外:
Error = "expected receiver of type com.kana_tutor.button_demo.MainActivity,
but got java.lang.Class<com.kana_tutor.button_demo.MainActivity>"
我尝试过使用类和意图,但都没有效果。我尝试从MainActivity(方法所在的位置)导出上下文并且这样做有效,但这似乎是一个坏主意。
什么是接收器?
Method.java将其描述为&#34; @param接收者调用此方法的对象。&#34;这只是对我称之为的方法的参考
我有方法所在的类及其名称。我怎样才能创建一个接收器?&#34;
我以前真的不需要使用反射或调用。
谢谢!
答案 0 :(得分:1)
接收器实际上是包含您尝试调用的方法的对象的实例。我说一个实例,因为当你调用它时对象必须存在 您可能创建了类似的方法:
Method method = classInstance.getMethod(methodName, View.class);
然后尝试用类似
的方式调用它retValue = handler.invoke(method, view);
MainActivity的上下文作为您的处理程序的原因是它的MainActivity.this - MainActivity对象的一个实例,并假设您调用的方法是在MainActivity中。调用会起作用。