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 :

Lancement d'activité avec OnCreateOptionsMenu [Débutant(e)]


Sujet :

Android

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Lancement d'activité avec OnCreateOptionsMenu
    Bonjour,

    Je développe une application pour Android (min SDK 14).

    Mon activité principale est une PApplet Processing, forcément en plein écran, sans barre d'action.

    De cette activité, je veux lancer une vue permettant de passer des variables à mon Applet. J'utilise OnCreateOptionsMenu pour ouvrir le menu d'options. Quand je presse l'unique item de ce menu, je lance une activité "activity_settings".

    Jusqu'ici tout va bien, mais ça m'ennuie que l'utilisateur ait à appuyer sur le bouton d'options, puis sur le bouton "Settings" du menu d'options. J’essaie donc de lancer directement mon activité "activity_settings" dans OnCreateOptionsMenu, sans afficher le menu d'options. Ca fonctionne la première fois, mais ensuite, l'acivité "activity_settings" ne s'ouvre plus...

    Si je fais la même chose en utilisant OnPrepareOptionsMenu au lieu d'OnCreateOptionsMenu, ça fonctionne et refonctionne sans problème... Je ne comprends pas pourquoi.

    Quelqu'un saurait-il m'expliquer cela ?

    Autre question, je ne parviens pas à capturer la taille d'un évènement OnTouch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            Log.d("Touché", String.valueOf(event.getSize()));
            return super.onTouchEvent(event);
        }
    LogCat me renvoie toujours 0.0
    Est-ce du à mon téléphone? Samsung GT7560 (Galaxy Trend)

    Comment puis-je faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    en clair tu souhaites ajouter un nouveau bouton avec une icône à côté de la liste déroulante du menu ? Si c'est le cas :

    MyFirstActivity.java :

    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
     @Override
        public void onCreateOptionsMenu(
                Menu menu, MenuInflater inflater) {
            inflater.inflate(R.menu.myMenu, menu);
        }
     
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            switch (id) {
                case R.id.action_customMenu:
                    //ouvrir une activité dans ton cas
                    return true;
            }
            return super.onOptionsItemSelected(item);
        }
    Ensuite il faut créer le xml associé à l'inflater ( inflater.inflate(R.menu.myMenu, menu); ), dans mon cas myMenu.xml à placer dans le dossier menu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/action_customMenu"
            android:icon="@android:drawable/ic_menu_add" //l'icône du bouton
            android:title="@string/openNewActivity" 
            app:showAsAction="ifRoom" //le bouton sera apparent que si l'activité associée à ce menu est l'activité courante
            android:orderInCategory="100" />
    </menu>
    Si j'ai compris ta demande, ça devrait fonctionner.

    T'as deuxième question, par contre je ne la comprends pas. Récupérer la taille du onTouch ? genre la taille du doigt ? oO (ou plutôt le type d'event ? simple touché, glissé vers la droite, vers la gauche, en haut, en bas...)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Euh non, tu ne m'as pas compris, mais merci de ta réponse. Je sais ajouter des items au menu.

    Je veux juste lancer mon activité de réglage sans passer par le menu Options.
    Et c'est là que ça se complique.
    Pour la deuxième question, c'est la taille du doigt...
    http://developer.android.com/referen...tSize%28int%29

    En utilisant la fonction Afficher les pointeurs dans les options développeurs de mon tel, size reste à 0 et pressure à 1... Je pense que c'est bien mon tel qui ne gère pas ça...
    Je vais chercher une autre solution.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    Je dois être assez limité niveau imagination :S Je ne vois que trois manière de faire afin d'ouvrir une nouvelle activité à partir d'un bouton.
    1) le menu déroulant comme tu l'as expliqué dans ton premier post.
    2) une icône à côté du menu déroulant (la disquette sur l'image ci-dessous), ce que je t'ai proposé.

    Nom : menu_reduced.png
Affichages : 553
Taille : 19,5 Ko

    3) mettre un bouton sur ton activité

    Je ne connaissais pas getSize() sur un onTouch,

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci Esteresis de ton intérêt.

    Ce que tu me montres, c'est une barre d'action, que je ne peux pas utiliser car ma classe principale est une PAppplet.
    Ce que j'essaie de faire, c'est de démarrer mon activité de réglages en appuyant sur le bouton d'options,
    cad le bouton physique de mon téléphone, celui qui sert à afficher les paramètres du téléphone ou d'une appli.
    Normalement, ce bouton ouvre le menu d'options (OnCreateOptionsMenu), et à partir des items de ce menu, tu peux par exemple ouvrir une activité.

    Ce que je fais, c'est que j'ouvre directement une activité, sans passer par ce menu d'options. startAcivity(...) au lieu de inflate(...).
    Ca ne marche qu'une fois, sauf quand je lance cette activité à partir de OnPrepareOptionsMenu.
    Ma question, c'est pourquoi ce comportement?
    J'espère que c'est plus clair^^

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    Ah, ok maintenant c'est plus clair effectivement. XD
    Du coup je dirai que cela rend comme ton appli très limité en utilisant un bouton de ton téléphone (sauf si ce n'est destiné qu'à ton téléphone).
    J'utilise jamais les bouton physique dans un appli mais il me semble que ça fonctionne par interception de clé à partir des méthodes onKeyDown() (appui) et onKeyUp() (relâchement)..du coup ça serait pas plus pratique de re-écrire cette méthode afin qu'il n'ouvre plus un menu mais ouvre ton activité ? Après je ne sais pas si la clé de ton bouton est connu comme KeyEvent.KEYCODE_VOLUME_UP ou KeyEvent.KEYCODE_VOLUME_DOWN (boutons volume comme le nom l'indique)

    Sinon pour ton soucis, je ne sais pas^^ J'espère que quelqu'un pourra te répondre.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Résolu
    Oui, ce n'est destiné qu'à mon tel... Pour le reste mon appli est dispo en java et html5 via le web.

    La réponse vient de m'arriver d'un autre forum: OnCreateOptionsMenu n'est exécuté qu'à la création de l'activité,
    alors que OnPrepareOptionsMenu est exécuté à chaque pression sur le bouton d'options.

    Du coup, tout va bien et j'ai appris qq chose! et trouvé la bonne méthode pour afficher mon activité de réglages directement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     @Override
        public boolean  onPrepareOptionsMenu(Menu menu) {
            Intent intent = new Intent(this,SettingsActivity.class);
            startActivity(intent);
            // Inflate the menu; this adds items to the action bar if it is present.
            //getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }

  8. #8
    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
    La différence entre onCreate et onPrepare.
    onCreate va te créer de zéro ton menu, et ensuite il sera préparé. Ainsi, à ta première action, tu passeras dans les deux étapes.
    Ensuite, en redemandant de nouveau le menu, celui-ci est déjà créé, et Android possède un système de cache natif pour ce genre de chose (les Actiivty, les Fragments, les Menu...) pour ainsi éviter de réaliser encore et toujours des re-créations, qui sont coûteuse en temps et ressources. Donc, le menu ne sera pas créé, et sera juste préparé (au cas où celui-ci devrait changer selon des actions utilisateurs quelconque).

    Sinon, le bouton "menu" lui-même a disparu des terminaux à partir des versions d'Android 4.0. Je pense donc que ce que tu souhaites faire n'est pas adapté à l'état actuel de la répartition des versions, ce genre de conception étant dépassé à présent.

    EDIT : bon ben... le temps que j'écrive, que j'éteigne mon urgence, et que je poste ensuite, la solution a été apportée
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/05/2007, 06h52
  2. Réponses: 1
    Dernier message: 03/04/2007, 14h01
  3. Réponses: 28
    Dernier message: 17/08/2006, 15h58
  4. [MS-DOS] Lancement de MozillaFirebird avec http://localhost/
    Par Furius dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/11/2005, 14h31
  5. Lancement de processus avec priorité
    Par GMI3 dans le forum Administration système
    Réponses: 2
    Dernier message: 14/06/2004, 16h43

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