/ / Navigation aufrufenKlick aus NavigationKlicken Sie auf "Vater" in Blackberry - Blackberry

NavigationClick von navigationKlicken Sie auf "Vater" in Blackberry - Blackberry

Bearbeitet ...

Ich versuche eine neue Komponente in meinem zu implementierenBlackBerry-App Ich habe eine neue Klasse, die den HorizontalFieldManager erweitert, wo ich ein neues ListField instanziiert habe. Darin habe ich die navigationClick-Methode überschrieben und ein Popup geöffnet. Der Name dieser Komponente ist CustomComponentHorizontal. Ich verwende diese Komponente in einer anderen Komponente, deren Name CustomComponentVertical lautet. Dies ist der Code:

In Main.java:

...

CustomComponentVertical ccv=new CustomComponentVertical();

...

add(ccv);

In CustomComponentVertical

...

CustomComponentHorizontal cch=new CustomComponentHorizontal{

...

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

...

add(cch);

In 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);
}
};
}
}
}

Mein Ziel ist, dass wenn ich in meine Komponente klicke,Es wird das navigationClick of listfeld gestartet. Wenn ich den Fokus in meine Komponente lege und mit Trackpad klicke, wird das Popup nicht geöffnet. Aber, wenn ich den Bildschirm über die Komponente berühre, und dann klicke ich mit Trackpad, Popup öffnen. Wie kann ich das Popup von einer Komponente öffnen, ohne das Touch-Ereignis zu verwenden?

Vielen Dank.

Antworten:

1 für die Antwort № 1

Ich kopiere deinen Code eingefügt. Es gab einige Fehler und Ihr Rückruf fehlte. Also habe ich es ein wenig repariert und einen einfachen Callback zum Testen erstellt, und der navigationClick Feuer. Hoffentlich hilft das, lassen Sie mich wissen, wenn es ein anderes Problem gibt, das ich nicht verstehe.

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);
}