/ / Invocar navigationClick desde navigationClick 'father' en Blackberry - blackberry

Invocar navigationClick from navigationHaga clic en 'padre' en Blackberry - blackberry

Editado ...

Estoy intentando desplegar un nuevo componente en miAplicación de BlackBerry Tengo una nueva clase que se extiende de HorizontalFieldManager, donde instancé un nuevo ListField. Dentro de esto, sobrescribí el método navigationClick y abro una ventana emergente. El nombre de este componente es CustomComponentHorizontal. Yo uso este componente en otro componente personalizado, su nombre es CustomComponentVertical. Este es el código:

En Main.java:

...

CustomComponentVertical ccv=new CustomComponentVertical();

...

add(ccv);

En CustomComponentVertical

...

CustomComponentHorizontal cch=new CustomComponentHorizontal{

...

    protected boolean navigationClick(int status, int time) {
//Should I do something here??
return super.navigationClick(status, time);
}
};

...

add(cch);

En CustomComponentHorizontal:

 public class CustomComponentHorizontal extends HorizontalFieldManager {
ListField choiceField=null;
PopupScreen popup=null;
public CustomComponentHorizontal (){
choiceField = new ListField(){
public boolean navigationClick(int status, int time) {
Field focus = UiApplication.getUiApplication().getActiveScreen().getLeafFieldWithFocus();
if (focus instanceof ListField) {
popup = new ChoicePopupScreen(10, 50, choices);
popup.setChoice(choices);
UiApplication.getUiApplication().pushScreen(popup);
setPopup(popup);
return super.navigationClick(status, time);
}
};
}
}
}

Mi propósito es que cuando hago clic en mi componente,Se lanza el navigationClick de listfield. Cuando pongo el foco en mi componente y hago clic con el trackpad, la ventana emergente no se abre. Pero, si toco la pantalla sobre el componente y luego hago clic con el trackpad, se abre la ventana emergente. ¿Cómo podría abrir la ventana emergente desde el componente sin usar el evento táctil?

Muchas gracias.

Respuestas

1 para la respuesta № 1

Copié pegado tu código. Hubo algunos errores y faltó su devolución de llamada. Así que lo arreglé un poco y creé una simple devolución de llamada para probar, y el navigationClick incendios Esperemos que esto ayude, avíseme si hay un problema diferente que no entendí.

public CustomComponent()
{
elements = new Vector();
elements.addElement("Element 0");
elements.addElement("Element 1");
elements.addElement("Element 2");
elements.addElement("Element 3");
elements.addElement("Element 4");
elements.addElement("Element 5");

choiceField = new ListField(elements.size())
{
public boolean navigationClick(int status, int time)
{
int index = getSelectedIndex();
Dialog.inform((String) elements.elementAt(index));

return true;
}
};

choiceField.setCallback(new ListFieldCallback()
{
public int indexOfList(ListField listField, String prefix, int start)
{
return elements.indexOf(prefix, start);
}

public int getPreferredWidth(ListField listField)
{
return Display.getWidth();
}

public Object get(ListField listField, int index)
{
return elements.elementAt(index);
}

public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width)
{
String obj = (String) get(listField, index);
graphics.setColor(0x000000);
graphics.drawText(obj, 0, y, 0, width);
}
});

add(choiceField);
}