alut a tous,

Voilà depuis pas mal d'heure j'essaye de résoudre un problème qui peut être assez simple (ou pas) et je bloque.

En fait j'essaye de faire une application android avec seule activité pour les vues.

J'ai donc ma class parent dont hérite toutes mes vues :
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
 
package org.deporteo.vue;
 
import java.util.ArrayList;
import java.util.Observable;
 
import org.deporteo.DeporteO;
import org.deporteo.R;
 
import android.os.Bundle;
 
public abstract class VueDeporteO extends Observable
{
    /**
     * L'activité de la vue.
     */
    private DeporteO activite;
 
    /**
     * Layout d'affichage de la vue.
     */
    private int layout;
 
    /**
     * Bundle de sauvegarde des informations de la vue.
     */
    private Bundle sauvegarde;
 
    public VueDeporteO(DeporteO activite, int layout)
    {  
        this.activite = activite;
        this.layout = layout;
        this.sauvegarde = new Bundle();
    }
 
    public DeporteO donneActivite()
    {
        return this.activite;
    }
 
    public Bundle donneSauvegarde()
    {
        return this.sauvegarde;
    }
 
    public int donneLayout()
    {
        return this.layout;
    }
 
    public void affiche() {
    }
 
    public void ferme(){};
 
}
Et voilà un exemple de vue :

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package org.deporteo.vue;
 
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
 
import org.deporteo.DeporteO;
import org.deporteo.R;
 
    public class VueConnexion  extends VueDeporteO
    {
 
        /**
         * Boutons de l'interface.
         */
        private Button buttonConfiguration,buttonConnection;
        private String nameButton;
 
        public String nameView ="ViewConnection";
        private VueDeporteO  viewConfiguration;
 
        /**
         *  Ã‰couteur de clicks sur les boutons.
         */
         private OnClickListener ecouteurBoutons = new OnClickListener()
        {
 
             // @param bouton bouton sur lequel on a cliqué.
 
            public void onClick(View button)
            {
                if (button instanceof Button) {
                    nameButton = (String) button.getTag();
                    System.err.println("J'appui sur un bouton");
                    System.err.println(nameButton);
                    performAction((Button) button);
                }
            }
        };
 
 
 
 
        public VueConnexion(DeporteO activite)
        {
            super(activite, R.layout.interface_connexion);
        }
 
        private void recuperationWidgetInterface()
        {
            /** Creation des boutons de l'interface */
            this.buttonConfiguration = (Button) donneActivite().findViewById(R.id.buttonConfiguration);
            buttonConfiguration.setTag("buttonConfiguration");
            this.buttonConfiguration.setOnClickListener(this.ecouteurBoutons);
            this.buttonConnection = (Button) donneActivite().findViewById(R.id.buttonConnection);
            buttonConnection.setTag("buttonConnection");
            this.buttonConnection.setOnClickListener(this.ecouteurBoutons);
        }
 
 
 
 
          public void performAction(Button button) {
                //On notifie le modèle d'une action si le contrôle est bon
                //--------------------------------------------------------
              nameButton = (String) button.getTag();
              System.err.println("Je perform l'action du bouton");
              System.err.println(nameButton);
                //Si le nom du bouton est dans la liste des changement de vues
                //if(this.listButtonView.contains(nameButton)){
                System.err.println("Le nom du bouton est dans la liste" );
                    System.err.println((String) button.getTag());
                        if(this.nameButton.equals("buttonConfiguration")){
                            //displayView(this.viewConfiguration);
                             System.err.println("envoie vue configuration");
                             notifyObservers("viewConfiguration");
                            //this.viewConfiguration.affiche();
                        }else if(this.nameButton.equals("buttonConnection")){
                            System.err.println("Envoi vue connection");
                            notifyObservers("viewConnection");
                        }else{
                             System.err.println("Error bouton, vue connexion.");
                        }
 
                //}
 
                }
 
        @Override
        public void affiche()
        {
            recuperationWidgetInterface();
        }
 
        /**
         * Ferme la vue.
         */
        @Override
        public void ferme()
        {
            // TODO
        }
    }
Dans la fonction performAction qui prend en paramètre un bouton j'essaye de changer de vue. En effet chaque bouton correspond à une vue différente ( connection et configuration).

et voila mon main :

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package org.deporteo;
 
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
 
 
 
import org.deporteo.vue.VueConnexion;
import org.deporteo.vue.VueChargement;
import org.deporteo.vue.VueConfiguration;
import org.deporteo.vue.VueDeporteO;
 
 
public class DeporteO extends Activity
{  
    /**
     * Vue de connexion.
     */
    private VueDeporteO  viewConnection;
 
    /**
     * Vue configuration.
     */
    private VueDeporteO  viewConfiguration;
 
    /**
     * Vue du chargement.
     */
    private VueDeporteO  viewLoading;
 
    /**
     * Vue courante.
     */
    private VueDeporteO viewActual;
 
    private String nameView;
 
    public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
 //Probleme ici
                        DeporteO dep = new DeporteO();
			dep.addObserver(new DeporteO.changeView());
 
 
            this.viewConfiguration = new VueConfiguration(this);
            this.viewConnection = new VueConnexion(this);
            //this.viewLoading = new VueChargement(this);
 
            /** Renseignement de la vue courante */
            this.viewActual = this.viewConnection;
 
            /** Affichage de la vue courante */
            displayCurrentView();
        }
 
    private void displayCurrentView()
    {
        setContentView(this.viewActual.donneLayout());
        this.viewActual.affiche();
    }
 
 
    private void displayView(VueDeporteO view)
    {
        /** Affichage de la nouvelle vue */
        this.viewActual = view;
        displayCurrentView();
    }
 
    @Override
    public void onBackPressed()
    {
        this.moveTaskToBack(true);
    }
 
public class changeView implements Observer
    {
    @Override
    public void update(Observable obj, Object arg) {
    	System.err.println("Vue recue");
        if (arg instanceof String) {
            nameView = (String) arg;
            System.err.println("vue egale");
            System.err.println(nameView);
            if(nameView.equals("viewConnection")){
            	displayView(viewConnection);
            	System.err.println("Affiche vue connection");
            }else if(nameView.equals("viewConfiguration"))
            {
            	System.err.println("Affiche vue configuration");
            	displayView(viewConfiguration);
            }
        }
    }
    }
 
}
J'ai des probleme pour mon addObserver qui n'est pas reconnu, donc la vue ne change pas pour lors du click d'un bouton.