我有Button,我可以使用任何方法,例如getText,setText ...使用
Method mth = myButton.getClass().getMethod("getText", parameterTypes);
但是当我尝试使用相同的代码获取“setOnClickListener”方法时
Method mth = myButton.getClass().getMethod("setOnClickListener", parameterTypes);
我收到异常:“NoSuchMethodException”异常。
我尝试过:
发送空参数
Class<?>[] parameterTypes = new Class[] {};
`Method mth = myButton.getClass().getMethod("setOnClickListener", parameterTypes);` NOT working the same Exception: "NoSuchMethodException"
i tried to get all the methods and identify it by name.
Method[] arrMethods = objElem.getClass().getMethods();
Method listener = getMethodByName(arrMethods,"setOnClickListener");
public Method getMethodByName(Method[] arrMethods,String MethodName)
{
for(int i=0;i<arrMethods.length;i++)
{
if(arrMethods[i].getName() == MethodName)
{
return arrMethods[i];
}
}
return null;
}
实际上找不到该功能。 很明显我在这里有一些误解。 可能是不可能达到这种方法? 提前谢谢。
答案 0 :(得分:0)
我不确定是什么
if(arrMethods[i].getName() == MethodName)
真的是你想要的。如果arrMethods [i] .getName()返回对MethodName引用的同一对象的引用,则此条件为真。
我认为你会检查字符串是否相等:
if(arrMethods[i].getName().equals(MethodName)
答案 1 :(得分:0)
您应该提供正确的参数类型
Class<?>[] parameterTypes = new Class[] {View.OnClickListener.class};
您始终可以在课程/方法文档View.setOnClickListener
中查看参数