Android не может получить доступ к методу setOnClickListener с помощью getMethod,getMethods,getDeclaredMethod

У меня есть кнопка, и я могу получить любой из ее методов, таких как 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 ответа

Я не уверен что

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

это действительно то, что вы хотите. Это условие будет истинным, если arrMethods[i].getName() возвращает ссылку на тот же объект, на который ссылается MethodName.

Я думаю, вы бы проверили, равны ли строки:

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

Вы должны предоставить правильные типы параметров

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

Вы всегда можете просмотреть параметр в документации класса / метода. View.setOnClickListener

Другие вопросы по тегам