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