Добавьте метод в пользовательский элемент управления Genexus, созданный в Android.

Я пытаюсь разработать пользовательский компонент для Genexus X EV 3 для смарт-устройств. Речь идет о персонализированном веб-просмотре, я использовал его в проекте, он работает, но только с использованием предопределенных методов, которые приносят Genexus, я не могу понять, как вызвать метод файла .java из проекта Genexus. В файле .control я добавил определение метода:

<Methods>
        <Method>          
          <Name>UCgoBack</Name>
               <ReturnType />
               <Parameters>
               </Parameters>
               <Signature>UCgoBack()</Signature>
        </Method>
</Methods>

Genexus распознает пользовательский элемент управления, я вижу метод в IntelliSense, но когда я его вызываю, он не выполняется. Спасибо за помощь.


person vadim    schedule 15.07.2015    source источник


Ответы (2)


В классе Android вашего пользовательского элемента управления вам необходимо реализовать метод runMethod, который вызывается GeneXus при вызове метода.

Это подпись метода:

public void runMethod(String name, List<Object> parameters)

name — это имя метода, определенное в вашем файле .control. В вашем случае список parameters должен быть пустым (поскольку ваш метод не имеет параметров).

Например, элемент управления Horizontal Grid имеет два метода, вы можете найти реализацию в гибком клиенте (ищите GxMagazineViewer.java)

person Marcos Crispino    schedule 16.07.2015
comment
Я добавил метод в класс, и он все еще не работает. Кажется, что Genexus не признает этот метод. Если мне нужно реализовать другой интерфейс, отличный от IGxEdit, в двух примерах, которые у меня есть, реализован IGxControlRuntime, но у меня нет документации по этому интерфейсу. - person vadim; 22.07.2015

Да, интерфейс IGxControlRuntime должен быть реализован:

@Override
public void setProperty(String name, Object value) {
}

@Override
public Object getProperty(String name) {
    return null;
}
@Override
public void runMethod(String methodName, List<Object> parameters) {
    if (methodName.toLowerCase().startsWith("methodname")){
        methodname();
    }
}

и эти методы должны быть реализованы. Большое спасибо, Маркос, за руководство.

person vadim    schedule 22.07.2015