Android无法通过使用getMethod,getMethods,getDeclaredMethod达到“setOnClickListener”方法

时间:2012-03-21 18:53:45

标签: android reflection getmethod

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

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

2 个答案:

答案 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

中查看参数