IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Actualiser activity avec des nouveaux paramétres


Sujet :

Android

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut Actualiser activity avec des nouveaux paramétres
    Bonjour,

    j'essaye de rafraichir mon activity (via un bouton) avec des nouveaux paramètres ( transfere et info).
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    OnClickListener rafraichir = new OnClickListener()
           {
    		public void onClick(View actuelView)
    		{	
    			finish();
    			Transfere transfere = new Transfere("6");
    			Info info = new Info("1");
    			startActivity(getIntent().putExtra("transfere", transfere).putExtra("info", info));
    		}
            };
     
          //BOUTON 
            Button bouton = (Button) findViewById(R.id.image);
            bouton.setOnClickListener(rafraichir);
    Je récupère bien les variables qui me permettent d’exécuter ma requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     String req = " SELECT * FROM tranfere t where tranfere.id_tranfere ="+tranfere+" and tranfere.id_info='"+info+"';";
      	  Log.e("log_tag", "req"+req);
      	    //on initialise le cursor
      	     FromBdd=null;
      	    //on executela requete est on alimente le cursor
      	    FromBdd = bdd.rawQuery(req,null);
     
     
      	    //On vérifie que la requete a bien renvoyer quelque chose
      	    if(FromBdd != null)
      	    {
      	    	 Log.e("log_tag", "FromBdd "+FromBdd.getCount());
    Mais ma requête ne renvoi aucun champs ce qui ne devrait pas être le cas.
    Je voudrais savoir si c'est la bonne méthode pour actualiser et pourquoi ma requête renvoi 0 ligne.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ben je sais pas ... tu as regardé le contenu de la commande SQL ?

    Plein de questions:

    Pourquoi ne pas simplement stocker les paramètres "Transfere" et Info, localement à l'activité, et juste raffraichir l'interface de celle-ci (là une nouvelle activité sera générée à chaque fois, beaucoup de code inutile donc).
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    class XXXActivity extends Activity
    {
         Transfere trans;
         Info  info;
     
         public void onCreate(Bundle bundle)
         {
             super.onCreate(bundle);
             setContentView(....);
     
             if (bundle == null) {
                 // get trans/info from Intent
                 Intent i = getIntent();
                 if (i == null) {
                     // default trans/info values
                 } else {
                    this.trans = i.getExtra(...);
                    this.info = i.getExtra(...);
                 }
             } else {
                 // get trans/info from bundle
             }
     
             Button bouton = (Button) findViewById(R.id.image);
             bouton.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View actuelView)
                 {	
    	          XXXActivity.this.trans  = new Transfere("6");
    		  XXXActivity.this.info = new Info("1");
    		  XXXActivity.this.refreshUI();
    	     }
             });
     
             refreshUI();
         }
     
         protected void onSaveInstanceState(Bundle bundle) {
              super.onSaveInstanceState(bundle);
              // save this.trans & this.info in bundle
         }
     
         public void refreshUI()
         {
             // use of this.trans & this.info
         }
    }
    Pourquoi ne pas utiliser les paramètres (au lieu de construire la commande SQL à la main avec paramètres intégrés, au risque d'oublier ou de mal 'escaper' ces paramètres) ?
    Là en plus, je ne sais pas ce que fait transfere.toString() et info.toString(), mais c'est ce qui sera utilisé pour construire la chaine....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static final String REQUEST_PARAMS = "SELECT * FROM tranfere t where tranfere.id_tranfere=? and tranfere.id_info=?"; // un point virgule de trop ?
     
    //on initialise le cursor
    Cursor fromBdd = bdd.rawQuery(REQUEST_PARAMS,new String[] { transfere.toString(), info.toString() });
    Pourquoi utiliser Log.e pour logger des choses qui ne sont manifestement pas des erreurs ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    juste raffraichir l'interface
    Je ne pense pas que je peux que rafraichir car par la suite je vais avoir d’autre bouton ou la valeur des variables ne seront pas les même et par exemple : info=2 et transfere = 7.

    Pourquoi ne pas utiliser les paramètre
    Je ne connaissais pas cette méthode qui est plus intéressante que la mienne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pourquoi utiliser Log.e
    Parce que j'aime le rouge.

    Je n'ai pas compris la methode refreshUI();
    Je suppose qu'elle donne l'action de rafraichir mais comment je suppose que ce n'est pas un intent ?

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Imagine l'activité comme un "objet"....

    L'action de raffraichir les données affichée (refreshUI()) est appelée à chaque fois que les filtres de base sont modifiés... Ces filtres étant "Info" et "Transfere"...

    Quand modifie-t-on ces filtres ?
    * A l'appui sur un des boutons => mise à jour des filtres, puis appel de refreshUI()
    * Au démarrage de l'activité
    .... * Une nouvelle activité (pas de 'saved-instance') => lecture des filtres depuis l'intent
    .... * Parceque l'activité a été reveillée par Android (rotation écran par exemple) => lecture des filtres depuis le bundle [qu'il ne faut pas oublier de sauvegarder avant]
    .... Dans tous les cas refreshUI()

    La fonction refreshUI() se chargera de modifier l'interface pour correspondre aux filtres.

    Ensuite chaque bouton peut avoir ses propres valeurs... Cela n'a rien à voir avec les "filtres courant" de l'activité.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Parce que j'aime le rouge.
    C'est une bonne raison, mais qui risque de faire disparaitre le "vrai" rouge dans le reste... d'autant qu'il est facile de filtrer le logcat par "tag" (ils servent à ca justement).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2015, 21h23
  2. Réponses: 1
    Dernier message: 25/06/2012, 23h56
  3. API Google Map démarrer une activity avec des coordonnées perso
    Par jeanjean6 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 23/08/2011, 14h05
  4. Select activable avec des boutons radio (IE :S)
    Par Fabthebug dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/09/2009, 15h49
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo