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 :

Action d'une activity depuis une autre activity


Sujet :

Android

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut Action d'une activity depuis une autre activity
    Bonsoir,

    J'essaye de faire "interagir" plusieurs activity, mais j'obtiens à chaque fois un NullPointerException ...

    Voila comment se compose mon projet :

    Une activity principale A
    Un bouton me permet de lancer l'activity B

    Une activity B (qui est une listView (android.R.layout.simple_list_item_1))
    Lorsque je clique sur un élément, je lance une autre activity C

    Une activity C (qui est une listView perso)
    Lorsque je clique sur un élément, j'aimerais modifier l'état d'un objet contenu dans l'activity A, puis retourner à l'activity A

    Mais comme je viens de le dire plus haut, j'obtiens à chaque fois un NullPointerException, lorsque je veux modifier l'objet contenu dans A.
    Comment se fait-il qu'il ne soit plus accessible ?






    Edit :
    Apparemment, le problème proviendrais du surfaceView contenu dans l'activity A qui est "indisponible". Or, puisque je veux modifier cet objet, je veux le "rafraichir" avec un onDraw, et c'est là que ça pose problème..
    Idée du pourquoi et du comment ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Pour appeler l'acvitity B de Class Activity_A

    dans class Activity_A

    Button.setonclick...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent intent = new Intent(Activity_A.this,Activity_B.class);
    startActivity(intent);
    Activity_A et Activity_B sont des Class Java (Activity_A.java, Activity_B.java)

    manifest xml
    if faut ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <activity android:name=".Activity_A" android:label="@string/app_name">
                    <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
            </activity>
    	<activity android:name=".Activity_B"></activity>
    si 2 class de Activitys dans les 2 packages differents, il faut ecrire : .packageB.Activity_B

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Bonjour,
    C'est normal que tu aies un NullPointerException vu que tu essayes de modifier un objet de l'activity A alors que celle ci n'est pas encore lancée.
    A partir de C, tu peux lancer A en lui passant les paramètres nécessaires aux modifications . Sinon tu peux utiliser des variables static dans ta classe A.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Vous ne m'avez pas bien compris, ou alors je me suis mal exprimé :

    Mon Activity A est mon activité principale, c'est à dire que quand le programme se lance, c'est l'Activity A qui démarre.
    Puis je clique sur un Bouton de l'Activity A pour lancer l'Activity B (cela fonctionne déjà)
    Puis l'Activity B se lance.
    Puis je clique sur un Bouton de l'Activity B pour lancer l'Activity C (cela fonctionne déjà aussi)
    Puis l'Activity C se lance.
    Puis je clique sur un Bouton de l'Activity C pour modifier le surfaceView contenu dans l'Activity A, puis pour retourner à cette Activity A.

    Mais la modification fait planter l'application lors de l'appel à la fonction onDraw() du surfaceView.

    Pour résumer, voila un petit dessin :



  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Je t'ai bien compris
    Pourrait tu préciser comment tu lances tes activity. J'avais supposé que tu faisais un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent i = new intent(A.this,B.class);
    startActivity(i);
    Si c'est le cas il est tout à fait normal que tu aies cette erreur.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Oui en effet je fais ainsi :

    Depuis l'activity A (principale et lancée au démarrage) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			Intent i = new Intent(this,B.class);
    			this.startActivity(i);
    Depuis l'activity B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intent i0 = new Intent(this,C.class);
    			this.startActivity(i0);
    			finish();
    Depuis l'activity C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //(modifications sur l'objet de Activity A)
    finish();
    Mais pourquoi ai-je donc cette erreur ?

  7. #7
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Salut,

    Pourrais tu également nous donner le code qui fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //(modifications sur l'objet de Activity A)
    Ainsi que l'exception complète que tu peux retrouvé dans le LogCat.

    Merci
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Voila tout d'abord le code d'erreur complet :
    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
    02-03 12:26:57.640: DEBUG/AndroidRuntime(324): Shutting down VM
    02-03 12:26:57.640: WARN/dalvikvm(324): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324): FATAL EXCEPTION: main
    02-03 12:26:57.681: ERROR/AndroidRuntime(324): java.lang.NullPointerException
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at simon.game.Panel.onDraw(Panel.java:88)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at simon.game.CanvasThread.refresh(CanvasThread.java:77)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at simon.game.Panel.clear(Panel.java:112)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at simon.game.MainActivity.ajouterMotif(MainActivity.java:332)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at simon.game.ListeMotifsOscillateurs$1.onItemClick(ListeMotifsOscillateurs.java:113)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.widget.ListView.performItemClick(ListView.java:3382)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.os.Handler.handleCallback(Handler.java:587)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.os.Handler.dispatchMessage(Handler.java:92)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.os.Looper.loop(Looper.java:123)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at java.lang.reflect.Method.invoke(Method.java:521)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-03 12:26:57.681: ERROR/AndroidRuntime(324):     at dalvik.system.NativeStart.main(Native Method)



    Pour le code, ça va être un peu long, parce que j'utilise plusieurs classes en cascades. Donc accrochez vous :

    Dans la classe ListeMotifsOscillateurs (correspond à C):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void onItemClick(AdapterView<?> a, View v, int position, long id) {
         MainActivity.ajouterMotif(motif);
         finish();
    Dans la classe MainActivity (correspond à A) ; surface est un objet Panel (extends SurfaceView) contenu dans le MainActivity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static void ajouterMotif(int[][] m) {
    		surface.clear();
    		surface.ajouterMotif(m);
    	}
    Dans la classe Panel : (canvasthread est un Thread de la classe canvasThread)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public void clear() {
    		canvasthread.refresh();
    	}
     
    	public void ajouterMotif(int[][] m) {
    		environment.ajouterMotif(m);
    		canvasthread.refresh();
    	}
    Dans la classe CanvasThread voici la méthode refresh() :
    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
    	public void refresh() {
    		Canvas c;
    		c = null;
    		try {
    			c = _surfaceHolder.lockCanvas(null);
    			synchronized (_surfaceHolder) {
    				_panel.onDraw(c);
    			}
    		} finally {
    			if (c != null) {
    				_surfaceHolder.unlockCanvasAndPost(c);
    			}
    		}
     
    	}
    Et d'après le code d'erreur, c'est la ligne "_panel.onDraw(c);" qui pose problème.
    Je signale que si j'effectue la même méthode depuis la MainActivity, cela fonctionne parfaitement.

  9. #9
    Jay
    Jay est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2002
    Messages : 124
    Points : 189
    Points
    189
    Par défaut
    Bonjour,

    Question bête !! pourquoi tu ne fais pas ton traitement dans l'activity A, lors de ton clic de l'activity C, tu passes tes paramètres de traitement.
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    C'est en effet une solution à laquelle j'avais pensé, mais je n'y arrive pas.

    Je ne comprend pas la syntaxe des passages de paramètres, et comment les récupérer dans l'activity principale...
    Il faut utiliser startActivityForResult() à la place de startActivity() ?

  11. #11
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Je te donne un exemple

    Dans ta class B
    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
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            textView = (TextView)this.findViewById(R.id.textView);
     
            Intent intent = new Intent(this, C.class);
            intent.putExtra("sampleData", "This is Sample Data");
            startActivityForResult(intent, 1);
        }
     
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if(resultCode==RESULT_OK && requestCode==1){
       String msg = data.getStringExtra("returnedData");
       textView.setText(msg);
      }
     }
    Dans ta class C lorsque tu veux revenir en arrière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Intent intent= getIntent();
      String msg = intent.getStringExtra("sampleData");
      msg += ", Added at Third";
      intent.putExtra("returnedData", msg);
      setResult(RESULT_OK, intent);
      finish();
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    En effet ça fonctionne, mais je dois faire passer l'information de l'activity C à l'activity A (sans passer par l'activity B).
    Du coup, en mettant le startActivityForResult() et la méthode onActivityResult() dans la classe A, et le putExtra() dans l'activity C, l'information se perd entre temps ...

    Je suis obligé de repasser par l'activity du milieu ? en mettant en cascade deux onActivityResult() ainsi que deux startActivityForResult() ?

  13. #13
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Oui, il n'y a pas de problème pour les mettre en série.
    Tu peux même normalement changer l'ordre des tâches, mais c'est peut être plus compliqué à mettre en place. (Et là faudra que t'aille jeter un oeil à la documentation, je n'ai plus l'exemple en tête )
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Oui, puisque A devrait faire ainsi :

    startActivity (this, B.class);
    mais en même temps startActivityForResult(this, C.class, int);

    Et je ne pense pas que cela fonctionne...
    Je vais essayer de les mettre en série.

  15. #15
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    C'est cette partie du problème que j'ai du mal à suivre :
    Puis je clique sur un Bouton de l'Activity C pour modifier le surfaceView contenu dans l'Activity A, puis pour retourner à cette Activity A.
    Pourquoi ne pas poser le problème comme suit :
    -> l'Activity C affiche l'Activity A en lui demandant (avec des paramètres) de modifier son surfaceView ?
    Tu auras le même résultat sauf que le code qui fait la modification du contrôle se trouve dans la même activité que le contrôle.

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Tout simplement parce que l'activity A est déjà démarrer, et les deux autres Activity ne doit que "modifier" (et non re-créer) l'activity A.
    B et C agissent comme des menus d'options

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Je viens de coder tout ça, mais ça plante toujours au même moment.
    Si je veux seulement afficher un Toast avec le resultCode, ça fonctionne parfaitement.
    Mais dès que je veux modifier le SurfaceView avec le onDraw ... CRASH
    Y aurait-il un moyen de retarder l'execution de cette méthode ajouterMotif() pour que le SurfaceView ait le temps de se réactiver, ou alors simplement une méthode pour forcer le SurfaceView de se réactiver ?
    Ou alors simplement une solution

    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
    02-04 20:19:26.304: DEBUG/AndroidRuntime(9409): Shutting down VM
    02-04 20:19:26.304: WARN/dalvikvm(9409): threadid=1: thread exiting with uncaught exception (group=0x40028a00)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409): FATAL EXCEPTION: main
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=999, result=-1, data=Intent { cmp=simon.game/.ListeMotifs (has extras) }} to activity {simon.game/simon.game.MainActivity}: java.lang.NullPointerException
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3712)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3754)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread.access$2800(ActivityThread.java:135)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2162)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.os.Handler.dispatchMessage(Handler.java:99)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.os.Looper.loop(Looper.java:143)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread.main(ActivityThread.java:4914)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at java.lang.reflect.Method.invoke(Method.java:521)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at dalvik.system.NativeStart.main(Native Method)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409): Caused by: java.lang.NullPointerException
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at simon.game.Panel.onDraw(Panel.java:88)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at simon.game.CanvasThread.refresh(CanvasThread.java:76)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at simon.game.Panel.clear(Panel.java:112)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at simon.game.MainActivity.ajouterMotif(MainActivity.java:349)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at simon.game.MainActivity.onActivityResult(MainActivity.java:453)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.Activity.dispatchActivityResult(Activity.java:3931)
    02-04 20:19:26.324: ERROR/AndroidRuntime(9409):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3708)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	if(resultCode==RESULT_OK && requestCode==999){
    	motif = data.getStringExtra("result");
    	Toast toast2 = Toast.makeText(this,motif , Toast.LENGTH_LONG);
    	toast2.show();
    	ajouterMotif(Motif.BEACON);	
    	}
    	super.onActivityResult(requestCode, resultCode, data);
    	}

  18. #18
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Y aurait-il un moyen de retarder l'execution de cette méthode ajouterMotif() pour que le SurfaceView ait le temps de se réactiver, ou alors simplement une méthode pour forcer le SurfaceView de se réactiver ?
    Tu peux toujours passer par un état , qui lorsque du dessine le ondraw défini si tu dois ajouter un élément ou pas .
    Tu le force a faux au début , vrai dans le onResult si c'est le cas , puis faux lorsque tu as dessiné l'élément .

    sinon , tu peux essayer d'ajouter tes modifs , et appeller le onDraw dans le nResume de l'activity.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Je n'ai finalement pas touché au onDraw().
    J'ai simplement modifier les objets sans les "rafraichir".
    Puis lorsque l'Activity principale revient à l'écran, elle se remet toute seule à jour.

    Merci pour vos réponses

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Réponses: 1
    Dernier message: 07/12/2014, 17h36
  3. [AC-2007] Copier une table depuis une base vers une autre
    Par Triton972 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/11/2009, 19h27
  4. Réponses: 2
    Dernier message: 26/11/2007, 12h22
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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