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 :

Enchaîner des Activités ? [Débutant(e)]


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Enchaîner des Activités ?
    Bonjour à tous,

    J'ai voulu me simplifier la vie mais je me demande si je suis pas allé complètement à l'encontre des process d'Android en faisant ça :
    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
    package fr.test.agentsecret;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
     
    public class MainActivity extends Activity {
     
        GameRule.Mode modeJeuEnum = null;
        GameRule.Type typeJeuEnum = null;
        Player P1 = null;
        Player P2 = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            Intent modeJeuIntent = new Intent (this,ModeJeuActivity.class);
            startActivityForResult(modeJeuIntent, 0);
     
            Intent typeJeuIntent = new Intent (getBaseContext(),TypeJeuActivity.class);
            startActivityForResult(typeJeuIntent, 1);
     
            Player P1 = new Player(typeJeuEnum);
            Player P2 = new Player(typeJeuEnum);
        }
     
        @Override
        protected void onActivityResult (int requestCode, int resultCode, Intent data)
        {
            if (requestCode == 0){
                modeJeuEnum = GameRule.Mode.valueOf(data.getStringExtra("modeJeu"));
            }
     
            if (requestCode ==1){
                typeJeuEnum = GameRule.Type.valueOf(data.getStringExtra("typeJeu"));
                P1.setName(data.getStringExtra("playerOneName"));
                P2.setName(data.getStringExtra("playerTwoName"));
            }
        }
    }
    Bon en gros je crée une activité qui n'affiche rien mais qui lance plusieurs autres activités les une à la suite des autres afin de pouvoir centraliser dans cette main Activity toutes les infos dont j'ai besoin pour faire tourner mon jeu (lequel fonctionne déjà). Pour l'instant ça ne fonctionne pas du tout, alors ma question est, puis-je continuer dans cette voie ou est-il préférable de rester sur les activités qui s'enchainent ?

    Voici le code de la première activé lancée par le Main en complément :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    package fr.test.agentsecret;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.RadioGroup;
     
    public class ModeJeuActivity extends Activity {
     
            //déclarer les layouts
     
            RadioGroup modeJeuRadioGroup = null;
            Button validerModeButton = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            //Affiche le premier ecran
            setContentView(R.layout.activity_main);
     
            //initialiser les layouts
            modeJeuRadioGroup = (RadioGroup)findViewById(R.id.radioMode);
            validerModeButton = (Button)findViewById(R.id.boutonValiderMod);
     
            validerModeButton.setOnClickListener(ValiderModeListener); 
        }
     
        //Initialisation des actions a executer en cas de click sur le
        // bouton valider.
     
        private OnClickListener ValiderModeListener = new OnClickListener() {      
            @Override
            public void onClick(View v) {
     
                GameRule.Mode modeJeuEnum = null;
     
                if(modeJeuRadioGroup.getCheckedRadioButtonId() == R.id.radioJVJ){
                    modeJeuEnum = GameRule.Mode.JVJ;
                }
     
                else{
                    modeJeuEnum = GameRule.Mode.JVC;
                }  
     
                //On envoie dans un intent la valeur Enum correspondant au
                //bouton checked.
     
                Intent modeJeuIntent = new Intent ();
                modeJeuIntent.putExtra("modeJeu", modeJeuEnum.toString());
                setResult(RESULT_OK,modeJeuIntent);
                finish();
            }
         };
    }
    En espérant avoir été clair.

    Merci d'avance pour votre aide.

  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
    Ce n'est pas du tout, mais du tout la bonne méthode...

    Il faut comprendre qu'on est dans un framework à base de messages.... startActivityForResult() va juste créer un "message" pour démarrer une autre activité. Ce message ne sera pris en compte par le système qu'au retour de la fonction onCreate().... donc....

    Il vaut mieux les démarrer de manière "séquentielle":
    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
    public void onCreate()
    {
        ...
        startActivityForResult(modeDeJeu);
    }
     
    public void onActivityResult(code)
    {
        if (code == modeDeJeu) {
            if (result == OK) {
                startActivityForResult(typeDeJeu);
            } else {
                finish(); // bye bye !
            }
        } else if (code == typeDeJeu) {
            if (result == OK) {
                // voilà on a tout
            } else {
                startActivityForResult(modeDeJeu);
            }
        }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Ok merci de m'avoir mis sur la bonne voie, ça fonctionne !

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

Discussions similaires

  1. Comment enchaîner des requêtes SQL
    Par AODRENN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/05/2007, 14h47
  2. Enchaîner des fonctions + appel de pages web
    Par torobravo dans le forum Access
    Réponses: 2
    Dernier message: 08/07/2006, 12h06
  3. [FLASH MX2004] Enchaîner des videos flv
    Par ridder75 dans le forum Flash
    Réponses: 6
    Dernier message: 05/10/2004, 14h34

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