BlackBerry Storm 9530 tracciamento eventi di tocco durante lo scorrimento
-
25-09-2019 - |
Domanda
hey nel mio schermo c'è un un campo di modifica e 2 campi pulsante personalizzato come "OK" e "Annulla" Qui di seguito ButtonField ci sono alcuni campi di etichette più focalizzabile
quando scrivo un nome nel campo di modifica e premere Invio quindi concentrarsi tratta di pulsante "OK", ma come si concentrano su pulsante "Annulla".
Inoltre durante lo scorrimento la messa a fuoco non si muove automaticamente avanti ???
cosa fare può essere I m confuso con gli eventi di tocco e la loro manipolazione !!!
Si prega di aiuto !!!!!!!!!!!!
Codice:
txt_Name = new EditField(TextField.NO_NEWLINE)
{
public void paint(net.rim.device.api.ui.Graphics g)
{
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name );
ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);
v2 = new VerticalFieldManager();
v2.add(btn1);
v2.add(btn2);
LabelField l1 = new LabelField("Hello Moon ",Field.Focussable);
LabelField l2 = new LabelField("Hello Citizen",Field.Focussable);
LabelField l3 = new LabelField("Hello People",Field.Focussable);
LabelField l4 = new LabelField("Hello world",Field.Focussable);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(v2);
add(v3);
}
protected boolean navigationClick(int status, int time)
{
if(OK.isFocus())
{
//execute some code
return true;
}
if(CANCEL.isFocus())
{
//execute some code
return true;
}
}
Soluzione 2
txt_Name = new EditField(TextField.NO_NEWLINE)
{
public void paint(net.rim.device.api.ui.Graphics g)
{
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name );
ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);
h2 = new HorizontalalFieldManager();
h2.add(btn1);
h2.add(btn2);
LabelField l1 = new LabelField("Hello Moon ",Field.Focussable);
LabelField l2 = new LabelField("Hello Citizen",Field.Focussable);
LabelField l3 = new LabelField("Hello People",Field.Focussable);
LabelField l4 = new LabelField("Hello world",Field.Focussable);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(h2);
add(v3);
}
protected boolean navigationClick(int status, int time)
{
int index = h2.getFieldwithFocusIndex();
if(h2==0)
{
//execute some code for OK
return true;
}
if(h2==1)
{
//execute some code for cancel
return true;
}
}
Altri suggerimenti
ho fatto proprio come Mark ha suggerito, FieldChangeListeners separate per ogni pulsante:
class Scr extends MainScreen {
EditField txt_Name;
ButtonField btnOK;
ButtonField btnCancel;
VerticalFieldManager v1;
VerticalFieldManager v2;
VerticalFieldManager v3;
Font font = Font.getDefault().derive(Font.BOLD, 20);
public Scr() {
txt_Name = new EditField(TextField.NO_NEWLINE) {
public void paint(net.rim.device.api.ui.Graphics g) {
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name);
btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK);
btnOK.setChangeListener(
new FieldChangeListener(){
public void fieldChanged(Field field, int context) {
Dialog.inform("OK pressed");
}});
btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK);
btnCancel.setChangeListener(
new FieldChangeListener(){
public void fieldChanged(Field field, int context) {
Dialog.inform("Cancel pressed");
}});
v2 = new VerticalFieldManager();
v2.add(btnOK);
v2.add(btnCancel);
LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE);
LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE);
LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE);
LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(v2);
add(v3);
}
}
Ora sembra essere OK:
alt text http://img40.imageshack.us/img40/6472/textentered.jpg alt text http://img59.imageshack.us/img59/7574/okpressed .jpg alt text http://img641.imageshack.us/img641/ 9246 / cancelpressed01.jpg
Aggiorna
Swati posso cliccare quei bottoni con simulatore di tempesta con un clic del mouse.
Non riesco a trovare altra spiegazione che Cod file in simulatore è dalla vecchia versione. È possibile controllare rapidamente modificando il testo dell'etichetta in codice e quindi distribuire e verificare se questo cambiamento sarà applicata in app sul dispositivo. Nel caso in cui in caso contrario, questa è la vecchia versione e si dovrebbe pulire simulatore e implementare app ancora una volta.
Spero che questo vi aiuterà!
Vedi anche BlackBerry - I cambiamenti non sono sempre riflette nella mia app
È possibile controllare l'ordine di messa a fuoco mediante l'override del metodo "navigationMovement" sullo schermo o manager che contiene i campi focusable, come il bene e pulsanti annullare. Basta valutare gli argomenti passati a tale metodo, si concentrano su campo desiderato utilizzando Field.setFocus (), e restituisce vero.
Per quanto riguarda la messa a fuoco non procedere con lo scorrimento - che è solo il modo in cui le opere di interfaccia utente touchscreen. La messa a fuoco si sposta solo quando si tocca un campo attivabile -. Quindi se non sta toccando tutti i campi focusable quando si "flick" lo schermo per scorrere, la messa a fuoco non cambierà