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

Composants graphiques Android Discussion :

Passer une variable de classe en paramètre d'un menu


Sujet :

Composants graphiques Android

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Passer une variable de classe en paramètre d'un menu
    Bonjour à tous,

    Je vous explique mon problème:

    J'ai plusieurs activity qui héritent de la classe MenuApp qui contient le menu de mon application (pour éviter de le déclarer dans toutes les classes).

    Dans ce menu, j'ai créé deux sous menu qui me permette de trier une listview (enfin c'est ce que je voudrais qu'ils fassent).

    Seulement je ne sais pas comment récupérer mon arraylist contenu dans la classe qui appelle le menu... Et comment savoir dans quelle classe il est appelé?

    Merci beaucoup pour votre aide n'hésitez pas à me demander si vous n'avez pas tout compris.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je me réponds, j'ai trouvé une solution pour récupérer des variables d'une classe dans lequel le menu est appelé:

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    public abstract class MenuApp extends Activity {
     
            private final static int MENU_RECHERCHE = 1;
            private final static int MENU_CONFIGURATION = 2;
            private final static int MENU_TRIER = 3;
            private final static int MENU_TRIER_NOM = 3;
            private final static int SOUMENU_NOM = 3000;
            private final static int SOUMENU_DATE = 3001;
            Context context = this;
            ProgressDialog dialog;
            String message = "Chargement de la page";
            Class<ContactSourceResult> contacts = ContactSourceResult.class;
            Class<? extends Context> locale;
            ContactSourceResult Contactsource; 
     
            ArrayList<Contacts> listeTri = new ArrayList<Contacts>();
     
                    @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.principale); 
                    dialog = new ProgressDialog(context);
                    dialog.setMessage(message);
                    locale = context.getClass();
                    Contactsource = new ContactSourceResult();
     
                }
     
                public boolean onCreateOptionsMenu(android.view.Menu menu) {
     
                    menu.add(0, MENU_RECHERCHE, Menu.NONE, "Nouvelle Recherche").setIcon(R.drawable.menu);
                    menu.add(1, MENU_CONFIGURATION, Menu.NONE, "Configuration").setIcon(R.drawable.config);
     
                    if(locale == contacts || locale == web){
                            menu.add(3, MENU_TRIER_NOM, Menu.NONE, "Trier par Nom").setIcon(R.drawable.tri);
                        }
                    if(locale == messages || locale == images || locale == videos || locale == mails){
                            SubMenu sousmenu = menu.addSubMenu(3, MENU_TRIER, Menu.NONE, "Trier par").setIcon(R.drawable.tri);
                            sousmenu.add(0, SOUMENU_NOM, Menu.NONE, "Nom");
                            sousmenu.add(0, SOUMENU_DATE, Menu.NONE, "Date");
                        sousmenu.setHeaderIcon(R.drawable.tri);
                    }
     
                    return true;
                 }
     
                 public boolean onOptionsItemSelected(MenuItem item) {
     
                     switch (item.getItemId()) {
     
                            case MENU_RECHERCHE:
     
                                    dialog.show();
                                    new Thread(new Runnable() {
                                            @Override
                                            public void run() {
                                                    Intent intent1 = new Intent();
                                                    intent1.setClass(context, UnifiedSearch.class);
                                                    startActivity(intent1);
     
                                                    dialog.dismiss();
                                            }
                                    }).start();             
     
                                            break;
     
                            case MENU_CONFIGURATION:
     
                                    dialog.show();
     
                                    new Thread(new Runnable() {
                                            @Override
                                            public void run() {
                                                    Intent intent1 = new Intent();
                                                    intent1.setClass(context, UnifiedSearch.class);
                                                    startActivity(intent1);
     
                                                    dialog.dismiss();
                                            }
                                    }).start();     
                                    break;
     
                            case SOUMENU_NOM:
     
                                    dialog.show();
                                    new Thread(new Runnable() {
                                                    @Override
                                            public void run() {
     
                                                    }
     
                                                    runOnUiThread(new Runnable() {
     
                                                                    }
     
                                             });
     
                                                    dialog.dismiss();
     
                                            }
                                    }).start();
                                    break;
     
                            case SOUMENU_DATE:
     
                                    dialog.show();
     
                                    new Thread(new Runnable() {
                                            @Override
                                            public void run() {
                                                    Intent intent1 = new Intent();
                                                    intent1.setClass(context, UnifiedSearch.class);
                                                    startActivity(intent1);
     
                                                    dialog.dismiss();
                                            }
                                    }).start();     
                                    break;
     
                            case MENU_TRIER_NOM:
                                    dialog.show();
                                    new Thread(new Runnable() {
                                                    @Override
                                            public void run() {
     
                                                    if (locale == contacts){
                                                            listeTri = Contactsource.getListReponseSource();
                                                            Collections.sort(listeTri);
                                                    }
     
                                                    runOnUiThread(new Runnable() {
     
                                                                    @Override
                                                                    public void run() {
                                                                            ListView listview = Contactsource.getListView();
                                                                            AdapterContacts adapter = new AdapterContacts(context, listeTri);
                                                                            //listview.setAdapter(adapter);
                                                                    }
     
                                             });
     
                                                    dialog.dismiss();
     
                                            }
                                    }).start();
                     }
                     return false;
                  }
     
    }
    Le seul problème est que je ne peux pas changer la vue courante à partir du menu...

    Une idée?

  3. #3
    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 vous explique mon problème:

    J'ai plusieurs activity qui héritent de la classe MenuApp qui contient le menu de mon application (pour éviter de le déclarer dans toutes les classes).

    Dans ce menu, j'ai créé deux sous menu qui me permette de trier une listview (enfin c'est ce que je voudrais qu'ils fassent).

    Seulement je ne sais pas comment récupérer mon arraylist contenu dans la classe qui appelle le menu... Et comment savoir dans quelle classe il est appelé?

    Merci beaucoup pour votre aide n'hésitez pas à me demander si vous n'avez pas tout compris.
    En même temps c'est quand même plus clair d'avoir le code approprié dans la class appropriée , pourquoi ne laisses tu pas le code du menu , dans la classe gérant l'action ?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Parce que j'ai besoin de ce menu dans toutes mes classes, c'était pour éviter de recoder le menu x fois...

  5. #5
    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
    Si tu veux continuer dans ton idée , tu implémentes encore le menu dans toutes tes classes et tu appelles ta classe mère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    //traitement dans Menu App 
    		super.onCreateOptionsMenu(menu);
     
    // Custom Class 
     
            }

Discussions similaires

  1. Passer une variable anonyme en paramètre
    Par Barsy dans le forum Linq
    Réponses: 5
    Dernier message: 30/01/2009, 10h50
  2. Passer une variable d'une class a une autre
    Par haaa11 dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2008, 15h18
  3. Réponses: 1
    Dernier message: 17/07/2008, 16h41
  4. passer une variable entre deux classes as3
    Par sanatou dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 27/06/2008, 21h52
  5. Passer une variable d'une classe à l'autre
    Par Gibou dans le forum C++
    Réponses: 2
    Dernier message: 16/06/2006, 08h38

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