0

我有 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;
    }

该功能实际上没有找到。很明显我在这里有一些误解。可能无法达到这种方法?提前致谢。

4

2 回答 2

0

我不确定是什么

if(arrMethods[i].getName() == MethodName)

真的是你想要的。如果 arrMethods[i].getName() 返回对 MethodName 引用的同一对象的引用,则此条件为真。

我想你会检查字符串是否相等:

if(arrMethods[i].getName().equals(MethodName)
于 2012-03-21T19:08:30.023 回答
0

您应该提供正确的参数类型

Class<?>[] parameterTypes = new Class[] {View.OnClickListener.class};

您始终可以在类/方法文档View.setOnClickListener中查看参数

于 2016-01-07T20:26:15.823 回答