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 :

Problème menu application Android


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Problème menu application Android
    Bonjour à tous,
    Je débute en développement Android ainsi que sur l'utilisation de ce forum.
    Si ce message n'est pas posté au bon endroit, toutes mes excuses par avance!

    Voilà mon sujet :
    j'essaye de développer une toute petite application sous AndroidStudio afin de l'installer sur mon téléphone
    (qui lui tourne sous Android 4.1.2). Je n'ai pas eu trop de soucis, à force de tatonner, pour la faire (pour l'instant
    c'est quelque chose de très simple, du style "HelloWorld"... Faut bien commencer).

    Je voulais rajouter en haut à droite un petit menu "Quitter". Pas de soucis pour le faire sur l'émulateur de l'IDE
    et aucun soucis non plus pour coder l'utilisation du menu quitter. En résumé tout fonctionne comme je veux sur émulateur.

    Par contre dès que j'installe cette application sur mon smartphone (un Wiko CinkPeak2), ce menu n'apparaît pas
    sur l'écran du téléphone. Tous les autres widgets apparaissent sans aucun soucis mais celui-ci, non!
    Je ne comprends pas d'où vient mon erreur...

    Quelqu'un peut-il m'éclairer? Quelqu'un a-t'il déjà observé cela?

    Merci par avance du tuyau.

    Lolo

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut début de solution...
    C'est encore moi...

    J'ai partiellement trouvé ce qui n'allait pas.

    Sur l'émulateur le menu apparaît en haut à droite du téléphone sous la forme de 3 petits point superposés
    tandis que sur le téléphone lui même, il apparaît quand on clique sur la touche en bas à gauche qui correspond
    à une "touche menu"...

    Par contre j'aimerai bien le mettre en haut à droit comme sur l'émulateur, en gros le mettre où je veux.
    Quelqu'un sait-il comment le faire?...

    Lolo

  3. #3
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour,

    Tout d'abord, pour ce qui es de l'émulateur, il me semble que tu peux avoir des vm de base qui simule assez bien la mise en page des smartphone. C'est a vérifier mais je crois me souvenir que j'en avais trouvé pour le Nexus7 ou la galaxy Tab.
    Je sais pas si ca existe pour ton modèle mais ca te permettrais d'éviter ce genre d'erreur. Faut que tu regarde dans ta liste d'emulateur ou sur le net (j'utilise Eclipse pour ma part et je sais pas comment ca marche sur AS pour la config des émulateurs...).

    Ensuite, pour ton bouton, tu peux tout simplement surcharger (ou customiser) le layout de l'action bar de ton application avec cette methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ActionBar mActionBar = getActionBar(); //tu recupere ton actionBar
    View mCustomView = mInflater.inflate(R.layout.action_bar, null); //tu recupere la vue de ta nouvelle actionBar (un simple xml que tu met dans ton /layout)
    mActionBar.setCustomView(mCustomView);//tu set la vue de ton actionBar avec ta customView
    mActionBar.setDisplayShowCustomEnabled(true);//tu set le mode custom a true pour autoriser la personnalisation de ton actionBar
    C'est le code que j'ai pour mon appli et ca fonctionne assez bien.

    Ce que je te donne la, c'est le buldozer, tu peux aussi modifier ton actionBar (celle de base) en touchant a des fichier de config de ton app mais je ne me rappel plus lesquel. regarde sur le net et tu trouvera rapidement


    GLHF

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    En supposant que ton menu est fait en xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/id_item"
              android:icon="@drawable/icon_item"
              android:title="@string/text_item"
              android:showAsAction="always"  />
    </menu>
    La solution vient de la propriété : android:showAsAction . Voir la documentation pour tous les valeurs possible , mais dans ton cas ifRoom ou always sont les solutions.

    Note : un peu de code ca fait pas de mal pour expliquer un problème , là on est dans le flou pour te répondre

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Merci pour ces réponses!
    Salut les gars,
    Tout d'abord merci pour ces retours.
    Je n'ai pas encore eu le temps d'essayer vos solutions mais je compte bien le faire d'ici demain
    (c'est férié demain donc j'aurai un peu de temps).

    Je prends bonne note de tout ce que vous venez de me dire et je reviendrai vers vous pour vous dire
    ce qu'il en est.

    Knavo,
    Lolo

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Euh... là je pige plus...
    J'ai essayé vos deux solutions en créant un nouveau fichier xml que j'ai mis au même endroit que le fichier créé par défaut pour mon application, donc sous le répertoire layout.
    Voilà son bout de code (désolé je ne sais pas faire comme vous, c'est à dire le faire apparaître comme un vrai bout de code et non une partie de texte de ce présent message) :
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/id_item"
    android:title="@string/action_tempo"
    android:showAsAction="always" />
    </menu>
    </LinearLayout>


    J'ai rajouté le morceau de code avec tous les imports qui allaient bien :
    ActionBar mActionBar = getActionBar(); //tu recupere ton actionBar
    View mCustomView = mInflater.inflate(R.layout.menuessai, null); //tu recupere la vue de ta nouvelle actionBar (un simple xml que tu met dans ton /layout)
    mActionBar.setCustomView(mCustomView);//tu set la vue de ton actionBar avec ta customView
    mActionBar.setDisplayShowCustomEnabled(true);//tu set le mode custom a true pour autoriser la personnalisation de ton actionBar


    Et là boum pas de soucis pour le compiler mais pour le lancer il me crache une erreur.
    Voici une copie d'écran de l'erreur :
    Nom : erreur_lancement.jpg
Affichages : 2607
Taille : 62,3 Ko

    Du coup je suis revenu en arrière pour essayer de retomber sur ce que j'avais avant.
    J'ai supprimé le fichier xml menuessai.xml, j'ai tout commenté le code additionnel donné au dessus,
    j'ai même commenté tous les imports que j'avais rajouté... Pas de chance mon application refuse toujours
    de se relancer... Que passa?...

    A tout hasard voici mes fichiers AndroidManifest.xml :
    (par contre là encore ce sera en copié/collé de code car je ne sais pas pourquoi mais le site me dit que mon fichier ne sont pas valides...)
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.laurent.myfirstapplication" >

    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_channel"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
    android:name=".MyActivity"

    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>

    </manifest>


    Je ne comprends vraiment pas ce qui se passe vu, que pour moi, je suis complètement revenu en arrière...
    Pouvez-vous au moins m'expliquer cette "nouvelle" erreur avant d'aller plus loin sur celle de départ?


    Help, au secours....

    Lolo

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut je progresse un tout petit peu...
    Je viens de refaire un essai en attendant que plus longtemps pour le lancement de l'émulateur et ça a marché.
    MAIS je reste toujours avec ce message un peu bizarre qui me dit que je n'ai pas déclaré mon "activité" dans le fichier
    AndroidManifest.xml...

    Vraiment je ne comprends pas la raison de ce message vu qu’apparemment ça fonctionne.
    J'aime bien comprendre alors j'essaye d'aller un peu plus loin. Du coup j'ai fait d'autre essais...

    J'ai juste supprimer la première ligne de mon fichier AndroidManifest.xml.
    Bonne nouvelle : le message d'erreur a bien disparu!

    Là je me dis que je peux maintenant "l'importer" dans le présent message, mais là...
    Veux pas...

    Il y aurait une autre erreur dans mon fichier AndroidManifest.xml que ça ne 'étonnerait pas, sauf que je ne vois pas
    laquelle et encore moins où... Par contre s'il y avait une erreur ça expliquerait que le site "Developpez.com" le considère
    comme non valide vu que je n'arrive pas à le télécharger dans le mail et que je suis obligé de faire du copié/collé du contenu.

    Auriez-vous donc une idée sur ce qui ne va pas dans mon fichier AndroidManifest.xml qui, je le précise, a été généré
    par l'IDE automatiquement? J'ai juste changer le nom pour l'icône...

    Je ne dis pas que je n'ai pas fait d'erreur mais avant d'aller plus loin dans la programmation de mes applis j'aimerai bien comprendre
    ce qui se passe pour, ensuite, partir sur des bases saines afin d'avoir le code le plus propre possible.

    Lolo

  8. #8
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour a toi,

    Spécialement, je ne vois pas d'erreur dans ton manifeste, si ce n'est peut être le name de ta classe, ds mes manifeste, j'ai le path complet (avec le nom du package).
    Par exemple : "com.example.laurent.myfirstapplication.MyActivity"

    Ensuite, je me trope peut-etre mais grunk est différente de la mienne.
    Je te met en exemple le layout d'une de mes action_bar :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#009ee2"
        android:paddingLeft="10dp"
        android:paddingRight="10dp">
     
    <!-- Une image qui est centré -->
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="8dp"
            android:src="@drawable/action_bar_image" />
     
    <!-- Une image clickable qui permet me permet de lancer une activité -->
        <ImageButton
            android:id="@+id/monCompte_actionBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dp"
            android:minHeight="60dp"
            android:minWidth="60dp"
            android:background="@null"
            android:src="@drawable/action_bar_mon_compte_picture" />
     
    </RelativeLayout>
    (pour faire pareils,tu dois mettre ton code entre les balise "[ CODE][/CODE]" en retirant l'espace)


    Par contre, qu'elle ligne as-tu supprimé de ton manifeste? je comprend pas bien quand tu dis "J'ai retiré la première ligne"

    GLHF

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Citation Envoyé par lpempoul28 Voir le message
    Euh... là je pige plus...
    J'ai essayé vos deux solutions en créant un nouveau fichier xml que j'ai mis au même endroit que le fichier créé par défaut pour mon application, donc sous le répertoire layout.
    Voilà son bout de code (désolé je ne sais pas faire comme vous, c'est à dire le faire apparaître comme un vrai bout de code et non une partie de texte de ce présent message) :
    Tu mélanges tout.

    Par défaut les menu de l'actionbar se créer via un fichier xml qui se trouve dans le dossier /res/menu .
    Voir : https://developer.android.com/traini...g-buttons.html
    Ma solution à ton problème n'est valable que si tu utilise cette methode. Le fichier xml que je te donne est un exemple de menu qui se trouve dans /res/menu. La partie importante est android:showAsAction="always" qui permet de toujours afficher le bouton.

    La méthode de Altak permet d'ajouter une customview à l'actionbar , ce qui n'est pas nécessaire pour créer un menu puisque l'actionbar les gères déjà nativement notamment grace à onCreateOptionsMenuet onOptionsItemSelected.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci de vos conseils à tous les deux.

    Par contre afin de ne pas mélanger deux questions dans le même post,
    je vais garder celui-ci pour mon soucis de menu que je veux faire apparaître
    et en ouvrir un deuxième sur le "mauvais" AndroidManifest.xml



    Je vais essayer vos compléments de solutions et répondrai aussi vite que possible
    sur le forum sur le résultat de ces essais.

    A+

    Lolo

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Altak Voir le message

    Par contre, qu'elle ligne as-tu supprimé de ton manifeste? je comprend pas bien quand tu dis "J'ai retiré la première ligne"

    GLHF
    Pour te répondre Altak c'est cette ligne là que j'ai retiré :
    <?xml version="1.0" encoding="utf-8"?>

    Ce qui a eu pour effet de retirer le message d'erreur indiqué sur la pop-up.
    Par contre comme je le disais j'ai ouvert un second post ("Pourquoi mon fichier AndroidManifest.xml est mauvais?")
    pour traquer ce problème.

    Pour le présent soucis, à savoir non affichage comme je le voudrais de mon menu, je continue à chercher à la lumière
    de vos dernières indications.


    A+

    lolo

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut quasiment corigé!
    Salut tout le monde,
    En retravaillant ça à tête reposée, j'ai compris que mon morceau de code n'était pas à la bonne place dans le fichier java principal de mon application.
    Donc une fois ramené au bon endroit (dans la fonction : "public boolean onCreateOptionsMenu(Menu menu)"), mes erreurs
    de code sont corrigées.

    Et puis en fouillant sur le site j'ai par contre trouvé d'autre post dans lequel il était évoqué les "Navigation Drawer".
    Voilà le lien que j'ai récupéré avec toutes les infos (c'est en anglais) :
    http://developer.android.com/design/...on-drawer.html


    C'est pas tout à fait ce que je voulais mais la solution est intéressante.
    Pour ma part je voulais pouvoir mettre où je voulais (sur le haut ou le bas de l'écran) un bouton menu.
    Sachant qu'il y a un bouton menu par défaut, que l'on peut bien entendu surcharger, sous Android et qui est fixé
    pour son emplacement, mon idée n'est peut-être pas faisable...

    En tout cas je considère que ce post comme résolu dans la mesure ou la solution des "Navigation Drawer",
    même si ce n'est pas celle que je voulais au départ est très bien.

    A+

    Lolo

  13. #13
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Citation Envoyé par lpempoul28
    Sachant qu'il y a un bouton menu par défaut, que l'on peut bien entendu surcharger, sous Android et qui est fixé pour son emplacement, mon idée n'est peut-être pas faisable...
    Plus maintenant. Le bouton "physique" menu a disparu avec Android 4 (Ice Cream Sandwich) et n'existe plus sur les terminaux construit avec cette version comme base. Les 3 boutons sont "retour", "home" et "applis en cours".

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

Discussions similaires

  1. Problème créer application Android 2.2
    Par michelp3 dans le forum Android
    Réponses: 1
    Dernier message: 29/09/2014, 11h04
  2. Probléme de connexion d'une application android vers une BD mysql
    Par hajer_baccouch dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 13/05/2012, 00h52
  3. Problème installation application sur Android
    Par Syberi@ dans le forum Android
    Réponses: 7
    Dernier message: 07/05/2012, 12h11
  4. Problème application Android sur Galaxy S2
    Par frimeman dans le forum Android
    Réponses: 2
    Dernier message: 01/08/2011, 01h45

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