/ / Извикване на навигацияНатиснете от навигациятаКликнете 'баща' в Blackberry - blackberry

Извикване на навигацияКликнете от навигацияКликнете върху "баща" в Blackberry - къпина

Редактиран ...

Опитвам се да използвам нов компонент в мояПриложение BlackBerry. Имам нов клас, който се простира от HorizontalFieldManager, където внедрих нов ListField. Вътре в това презаписах метода navigationClick и отворих изскачащ прозорец. Името на този компонент е CustomComponentHorizontal. Използвам този компонент в друг персонализиран компонент, името му е CustomComponentVertical. Това е кодът:

В Main.java:

...

CustomComponentVertical ccv=new CustomComponentVertical();

...

add(ccv);

В CustomComponentVertical

...

CustomComponentHorizontal cch=new CustomComponentHorizontal{

...

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

...

add(cch);

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

Моята цел е, че когато щракна в моя компонент,се стартира навигациятаНатиснете списъка на полетата. Когато сложа фокуса в моя компонент и щракна с тракпад, изскачащият прозорец не е отворен. Но, ако докосвам екрана над компонента, и след това щраквам с тракпад, се отваря изскачащо. Как мога да отворя изскачащия прозорец от компонент без да използвам събитието на допир?

Благодаря ти много.

Отговори:

1 за отговор № 1

Аз копирам поставения код. Имаше някои грешки и извикването ви липсваше. Така че аз го поправих малко и създадох просто обратно извикване, за да тествам с и navigationClick пожари. Надяваме се това да помогне, да ме уведомите, ако има друг проблем, който не разбрах.

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