2011-04-26 1 views
0

Ma requête est Comment accéder aux champs de l'écran empilé à l'aide de l'objet Screen?Comment accéder à l'écran à l'aide de Screen Object (UiApplication.getUiApplication(). GetActiveScreen())

Le problème exact est le suivant:

je un écran qui a lorsque l'utilisateur clique sur ce champ, un champ de texte (ClientName) application puis appuyez sur un nouvel écran et il permettra à l'utilisateur de rechercher dans base de données distante en utilisant MyWebSerivces. et lorsque l'utilisateur sélectionne le client dans le résultat de la recherche, je veux définir le champ de texte sur l'écran précédent avec le texte que l'utilisateur a sélectionné sur l'écran courant ..

J'ai essayé l'écran tactile (nouvel écran (" texte)) et cela pourrait être le résultat si je veux faire cette opération une seule fois, mais ce n'est pas l'option pour moi, car il y a deux autres champs qui iront à l'autre écran pour récupérer les données des services web.

Répondre

0

j'ai trouvé la réponse à ma question. la solution était là dans ma question mais au début je n'ai pas pu la trouver. solution était très simple quand je l'ai écrit que je veux utiliser

UiApplication.getUiApplication().getActiveScreen() 

qui était presque le droit chemin et je procédait dans la bonne direction, mais la chose que je ne manquait «Je ne CASTING l'écran (ce je viens de récupérer le dessus de la pile) à son type seule chose que j'aurais dû faire est "aurait dû coulé l'écran à son type.comme celui-ci

UiApplication.getUiApplication().posScreen(this) 
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 

maintenant je suis en mesure d'accéder à tous les champs à l'écran récupéré (MyScreen1)

choses à garder à l'esprit

  1. assurez-vous que u jeté l'écran à son type uniquement sinon bb donnera u Ressource non trouvée erreur

Benifits d'utilisation sur écran Stack

  1. u peut utiliser l'écran déjà créé à partir de la pile pas nécessaire de créer nouveau
  2. si u créer un nouvel écran, il sera empilé en mémoire et consommera de plus en plus de mémoire, même si son d'aucune utilité (prendre l'habitude pour faire apparaître l'écran s'il est inutile au lieu de le laisser sur la pile))
  3. pas nécessaire de créer une variable statique puisque u sera en mesure de mettre tout le champ tout de suite d'un autre écran
1

Ce n'est pas une question liée à BlackBerry (ou à un langage de programmation spécifique) .C'est une question d'architecture d'application et de bon sens. Si un écran doit changer un Field d'un autre écran, il suffit de passer une référence du Field à l'écran qui va le changer.

+0

thnx pour le rply et oui il pourrait ne pas être une question de blackberry mais je développais une application de mûre et j'ai pensé sur la communauté de bb je trouverai la réponse. mais la façon dont vous suggérez de "passer une référence" dans ce cas je dois pousser l'écran et je ne veux pas que le nouvel écran soit poussé ... de toute façon j'ai trouvé la réponse à ma question dans ma question seulement ... – MrPandav

0

Salut, j'ai eu même problème et je l'ai fait comme ceci:

Screen1

    ------------------ 
    Client Name  | text field  | 
        ------------------ 

Lorsque l'utilisateur clique sur ce champ de texte ou tout autre bouton pousser Screen2 Dans l'écran 2 lorsque l'utilisateur sélectionne un particulier valeur alors faites-le.

1) prendre une variable statique dans la classe principale, dire clientName. 2) définir la valeur de cette variable. 3) pop écran actif

UiApplication.getUiApplication().getActiveScreen(); 

lorsque ce code est appelé alors u revenir à Screen1 maintenant en screen1 une méthode est appelée

public void onExposed() 
    { 
     //here u can set the text in textfield using the static variable 
     invalidate(); // for repainting 
    } 
+0

c'est un bonne idead d'utiliser une variable statique et de le définir sur l'événement onExpsoed mais la valeur statique ici n'est pas la meilleure option pour moi quand nous parlons d'utilisation efficace de la mémoire et mon application est une application mobile. et toi, j'ai trouvé la réponse à ma question dans ma question même. – MrPandav

+0

oh dats gr8 u got ans, les variables statiques doivent être utilisées lorsqu'elles sont requises pour éviter les problèmes de mémoire. vous devez poster votre réponse afin que tous les autres puissent obtenir de l'aide aussi – Swati

Questions connexes