[J2ME] pb refresh lors du passage de page en page

pb refresh lors du passage de page en page [J2ME] - Java - Programmation

Marsh Posté le 06-04-2006 à 17:13:50    

Salut à tous
je developpe sous eclipse 3.1 + me une petite interface de messenger.
pour l'instant j'ai la contact liste et differentes pages accessible en cliquant sur les options disponibles sur chaque contact.

 

le pb vient du fait que chaque page n'est créée qu'une seule fois.
j'explique chronologiquement:
- on se trouve sur la page "liste de contact"
- on choisi le contact "A" et on faire "voir profil"
- une page profil s'ouvre et affiche les coordonnées de "A"
- ensuite on presse ok, et on est de nouveau sur la page "liste de contact"

 

- maintenant si on clique sur "B" et on fait "voir profil"
- la page profil s'ouvre a nouveau, mais avec le profil de "A" car la page n'est pas regénérée

 

je ne sais pas comment palier à ce pb qui est repeté avec tous les types de page de mon programme.

 

Si quelqu'un a une idée, je suis prenneur
Merci

Reply

Marsh Posté le 06-04-2006 à 17:13:50   

Reply

Marsh Posté le 06-04-2006 à 17:58:23    

:jap: Salut,

 

Je ne comprends pas bien ton problème.

 

Pourquoi ne recharges-tu pas la page?
Il suffirait que tu supprime ta page "profil" en la quittant et que tu instancies une autre page "profile" la fois d'après, avec le bon paramètre pour afficher les bonnes infos.

  

Reply

Marsh Posté le 07-04-2006 à 09:52:16    

effectivement, ça pourrait etre un debut de solution.
mais comment supprimer la page ? il existe une methode implementée pour detruire une page 'form' ?

Reply

Marsh Posté le 07-04-2006 à 10:55:33    

j'ai essayé de faire un deleteAll() de tous les elements de la page, mais à la 2e requete sur cette page, rien 'nest reconstitué, et je me retrouve avec une page blanche.

Reply

Marsh Posté le 07-04-2006 à 11:23:27    

je viens de penser à une chose,
avant de créer une page, on verifie ceci:
 
 

Code :
  1. if (pageProfil == null) {
  2.             pageProfil = new PageProfil("profil de " +userNickname);
  3.             ...
  4.         }


 
 
j'ai donc pour idée de réinitialiser à null l'objet pageProfil quand je vais cliquer sur le bouton "ok" qui est dans cette page et je vais retourner à la liste de contact
 
Chronologiquement ça donne
- je suis ds la liste de contact
- je clique sur "A" voir profil
- la page profil est créée avec les données de "A"
- je visualise, je clique sur ok, l'objet pageProfil est remis à null et je retourne a la page contact
 
Mais ça ne fontionne pas, surement parceque je suis considéré encore ds la page profil quand l'action de remetre à null est executé.
Je ne sais pas comment m'y prendre...
 
Une idée?

Message cité 1 fois
Message édité par white-rabbit le 07-04-2006 à 11:23:48
Reply

Marsh Posté le 07-04-2006 à 15:46:47    

bien me revoilà apres moultes essais non concluant

 

en fait à la seconde utilisation de la page, l'execution cause l'erruer suivante et impossible de continuer vers le page profil

 

Code:
 

Code :
  1. java.lang.IllegalStateException
  2. at javax.microedition.lcdui.Form.<init>(+109)
  3. at contactListMidlet.get_ficheContact(+77)
  4. at contactListMidlet.access$2(+4)
  5. at contactListMidlet$ContactListForm.commandAction(+98)
  6. at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+296)
  7. at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
  8. at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
  9. at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
  10. at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)


Message édité par white-rabbit le 12-04-2006 à 14:42:25
Reply

Marsh Posté le 07-04-2006 à 16:04:30    

white-rabbit a écrit :

Chronologiquement ça donne
- je suis ds la liste de contact
- je clique sur "A" voir profil
- la page profil est créée avec les données de "A"
- je visualise, je clique sur ok, l'objet pageProfil est remis à null et je retourne a la page contact


 
C'est peut etre idiot ce que je vais dire mais pourquoi tu fais pas une methode qui affiche un nouvel ecran avec les données du contact et une commande pour revenir a l'ecran precedent
 
public void showContact(String userNickname) {
Form fmContact = new Form("Profil de "+userNickname);
 
// tu crées une commande cmOK initialisee avant:
cmOK = new Command(...);
fnContact.addCommand(cmOK);
 
// tu affiches les donnees de ton contact
fmContact.append("Nom : " +userNickname);
.
.
.
.
 
fmContact.setCommandListener(this);
 
display.setCurrent(fmContact);
 
}
 
 
Dans le commandAction():
 
if (c == cmOK)
display.setCurrent( "ton ecran avec la list des contacts" ) ;


Message édité par arrau le 07-04-2006 à 16:06:09
Reply

Marsh Posté le 07-04-2006 à 16:10:10    

bah typiquement c'est exactement ce que je fais actuellement.
ça marche tres bien.... mais qu'une seule fois !
 
argh

Reply

Marsh Posté le 07-04-2006 à 21:51:06    

white-rabbit a écrit :

bah typiquement c'est exactement ce que je fais actuellement.


 
Ah desolé  :lol:  
 
Tu passes le form a null au moment ou l'utilisateur clique sur la commande pour afficher la liste?
Dans le commandAction:
 
if (c == ta_commande_pour_afficher_la_liste ) {
 
  userName = ...
  if (fmContact != null)
    fmContact = null;
 
  showContact(userName);
 
}

Reply

Marsh Posté le 10-04-2006 à 10:23:24    

voilà mon command action pour quand je quitte la page profil:
 
        if (displayable == ficheContact) { // ecran fiche du contact
            if (command == backFromFiche) {
             javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_contactListForm());  // retour à la page contact
             ficheContact = null; // reinit de la page fiche
             
            }
        }

Reply

Marsh Posté le 10-04-2006 à 10:23:24   

Reply

Marsh Posté le 11-04-2006 à 10:34:46    

ça parle à personne :( ?

Reply

Marsh Posté le 12-04-2006 à 14:39:49    

petit relance ...
 :cry:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed