2010-04-30 17 views
1

je travaille sur blackberry 8300trackroll ne fonctionne pas comme je veux ou que vous prévoyez faire, mûre

i ont ajouté quelques composants dans l'écran principal, maintenant je veux déplacer le focus verticalement lorsque la boule de commande déplace vers le haut ou vers le bas et déplacez la mise au point horizontalement lorsque la roulette se déplace vers la gauche ou vers la droite.

============================================== ====================================

--Title area that contains a focusable field(BACK)-- 
--Non focusable Label field that indicates the name of the user-- 
--A horizontal field manager1 that contains 4 buttons-- 
--A horizontal field manager2 that contains 4 buttons-- 
--A horizontal field manager2 that contains 4 buttons-- 

======= ============================================= ==========================

maintenant supposons que le focus est sur le bouton BACK et que je fais défiler la roulette vers le bas puis, aller sur le 1er bouton du gestionnaire1 Encore une fois quand je fais défiler vers le bas, puis la mise au point devrait venir sur le 1er bouton du manager2 et non le 2ème bouton du manager1 (comme cela se passe sur l'appareil)

mon code est :::

protected boolean trackwheelRoll(int amount, int status, int time) 
{ 
focusIndex = this.getFieldWithFocusIndex(); 
System.out.println("focus index ::::::::::::::::"+focusIndex); 
Field f; 
if(focusIndex!=0) 
{ 
    if(amount==-1) 
    { 
    //move up 
     if(focusIndex>=0) 
     { 
     focusIndex = focusIndex-1; 
     f = getField(focusIndex); 
     f.setFocus();  
     } 
    } 
    if(amount==1) 
    { 
    //moving down 
     if(focusIndex<=3) 
     { 
      f = getField(++focusIndex); 
      f.setFocus(); 
     } 
    } 
    } 
return super.trackwheelRoll(amount, status, time); 
} 

même après ce contrôle se déplace brusquement sur simulateur mais sur l'appareil sans changement a eu lieu

Répondre

2

Essayez redéfinissant la méthode [navigationMovement] [1] au lieu de trackwheelRoll - vous aurez accès aux paramètres "dx" et "dy", vous pourrez donc savoir s'ils sont en train de se traîner en haut/en bas ou d'un côté à l'autre. La méthode trackwheelRoll est un peu archaïque maintenant qu'il n'y a plus de dispositifs de trackwheel.

[1]: http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/ui/Manager.html#navigationMovement(int, int, int, int)

+0

votre idée a marché !!! J'ai essayé le mouvement de navigation Je me suis rendu compte que la molette ne fonctionne pas sur les appareils dotés d'un pavé spatial ou d'une boule de commande – Swati

1
protected boolean navigationMovement(int dx, int dy, int status, int time) 
{ 
    Field f; 
    int index; 
    focusIndex = this.getFieldWithFocusIndex(); 
    if(focusIndex==1) 
    { 
     f = getField(focusIndex); 

     Manager m = (Manager)f; 
     index = m.getFieldWithFocusIndex(); 
     if(dx==-1) 
     { 
      index = index--; 
      if(index>=0) 
       { 
       f = m.getField(index); 
       f.setFocus(); 
       } 
     } 
     if(dy==-1) 
     { 
      index = index-3; 
      if(index>=0) 
       { 
       f = m.getField(index); 
       f.setFocus(); 
       } 
     } 
     if(dx==1) 
     { 
      index = index++; 
      if(index<=19) 
       { 
       f = m.getField(index); 
       f.setFocus(); 
       } 
     } 
     if(dy==1) 
     { 
      index = index+3; 
      if(index<=19) 
       { 
       f = m.getField(index); 
       f.setFocus(); 
       } 
     } 
    } 
    return super.navigationMovement(dx, dy, status, time); 
}