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 :

Démarrer une Activity au clic sur un menu


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut Démarrer une Activity au clic sur un menu
    Bonjour,

    Je suis actuellement en train de me former sur Android et je cherches actuellement à démarrer une Activity au clic sur un MenuItem. J'ai trouvé différentes informations concernant les Intents, etc, cependant, impossible de réussir à le faire !

    Voici ce que j'ai comme code au sein de mon switch (correspondant aux différents choix de menus) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent in = new Intent(this, Nouvoh.class);
    TestMenu.this.startActivity(in);
    Je pensais que cela me permettait d'ouvrir l'activity mais en l'occurrence, non !

    Quand à ma classe Nouvoh, elle permet simplement de créer une ListView : voici le code associé :


    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
    public class Nouvoh extends ListActivity implements OnItemClickListener{
     
        public String[] items = {"Paris", "Lille", "Valenciennes", "Lyon", "Marseille"};
    	public ListView list = new ListView(this);
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        	final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getBaseContext(),
       	            android.R.layout.simple_list_item_1, items);
        	list.setAdapter(adapter2);
        	list.setClickable(true);
            list.setOnItemClickListener(this);
            this.setContentView(list);
        }
     
    	@Override
    	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    		new AlertDialog.Builder(this).setTitle("Titre").setMessage("Message !").setNeutralButton("Fermer", new DialogInterface.OnClickListener(){
    			public void onClick(DialogInterface dialog, int which) {
    				AlertDialog.Builder ab=new AlertDialog.Builder(Nouvoh.this);
    					        ab.setTitle("Title");
    					        ab.setSingleChoiceItems(items, 0,new DialogInterface.OnClickListener() {
    					            public void onClick(DialogInterface dialog, int whichButton) {
    					                  // onClick Action
    					            }
    					        })
    					        .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
    					            public void onClick(DialogInterface dialog, int whichButton) {
    					                    // on Ok button action
    					                            }
    					        });
    			}
    		}); 	
    	}
     
    }
    Sauriez vous d'où viens mon erreur ?

    Je vous remercie d'avance !

  2. #2
    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 : 41
    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
    Par défaut
    Salut,

    Ca serais plus simple si tu nous postais l'erreur (View LogCat sous Eclipse)

    A première vue plusieurs pistes :
    - As-tu déclarer ta nouvelle activity dans ton manifest ?
    - Tu as tester ta deuxième activity toute seule ? Je pense qu'il y a des erreurs dedans...
    ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id "@android:id/list" (or list if it's in code)
    (cf : http://developer.android.com/referen...tActivity.html )

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    salut voila un petit 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
    @Override
        public boolean onOptionsItemSelected(  MenuItem item) 
        {
        	Log.v(TAG, "option: " + item.getItemId());
        	switch (item.getItemId())
        	{
        		case MENU1:
        			Intent i = new Intent(this, A.class);
        			startActivityForResult(i, ACTIVITY1_REQUEST);
        			break;
     
     
        		case MENU2:
        			Intent j = new Intent(this, B.class);
        			startActivityForResult(j, ACTIVITY2_REQUEST);
        			break;
     
     
        		case MENU_EXIT:
        			finish();
        			break;
     
        	}
     
        	return super.onOptionsItemSelected(item);
        }
    si votre nouvelle activité va retourner un résultat à l'activité principale utilisez startActivityForResult sinon utilisez startActivity

    bonne fin de journée

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    Voici l'erreur que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [2010-04-22 17:46:22 - TestMenu] ActivityManager: Starting: Intent { action=android.intent.action.MAIN categories={android.intent.category.LAUNCHER} comp={com.TestMenu/com.TestMenu.TestMenu} }
    [2010-04-22 17:46:22 - TestMenu] ActivityManager: Warning: Activity not started, its current task has been brought to the front
    Concernant le manifest, voici ce qu'il contient :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.TestMenu"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".TestMenu"
                      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=".Nouvoh"
                      android:label="@string/app_name" android:enabled="true" android:finishOnTaskLaunch="true">
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="3" />
    </manifest>
    est ce que c'est ce qu'il faut ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    J'ai réussis, c'étais effectivement la classe Nouvoh qui ne fonctionnait pas correctement.

    Par contre, lorsque l'on fait cela, on ouvre l'intent "par dessus" l'activity de base... comme faire pour accéder tout de même au menu de l'activity de base ? est ce possible ?

    Merci d'avance !

  6. #6
    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 : 41
    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
    Par défaut
    Salut,

    De base c'est pas possible de faire un "menu transversal". Tu peux peut être regarder en créant une première classe qui hériterait d'Activity : MenuActivity.
    Et ensuite faire hériter chacune des Activity où tu veux ton menu de MenuActivity.
    (et bien sur dans MenuActivity tu y colles tout ce qu'il faut pour gérer ton menu)
    C'est peut être pas claire ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    Bonjour,

    Si c'est clair, je vois tout à fait ce dont tu veux parler mais... je me demande si il n'existe pas une manière de faire ca (où quelque chose qui y ressemble) de manière plus "propre"... quelque chose qui correspondrait aux usages Android...

    Voila en gros ce que je voudrais faire :
    - mon application se lance,
    - un menu contenant 4 choix apparait lors du clic sur le bouton "Menu"
    - lorsque l'on clique sur un des menus, on crée une instance d'une classe qui va créer le contenu à afficher
    - une fois le contenu créé, le résultat s'affiche dans la même activité (le menu est toujours accessible, etc)

    Est ce possible ? Dois je utiliser autre chose que les intents ?

    Merci !

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

Discussions similaires

  1. ouvrir un formulaire dans une iframe au clic sur un menu
    Par djelloharmel dans le forum Débuter
    Réponses: 2
    Dernier message: 28/02/2015, 20h52
  2. Ouverture d'une autre fenêtre par un clic sur un menu
    Par helabah dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 29/05/2012, 14h40
  3. [DOM] Masquer une image au clic sur un lien du menu
    Par nicolas2603 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/03/2009, 10h02
  4. [HTML] affichage d'une page après clic sur le bouton 'précédent' du navigateur
    Par val_lala dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 06/04/2008, 23h21
  5. Afficher une image au clic sur un bouton
    Par lycaon dans le forum Général VBA
    Réponses: 4
    Dernier message: 23/04/2007, 19h21

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