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 :

Traitement d'un click sur un linearLayout contenant une classe !?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Prof Maths, ex développeur Assembleur et C
    Inscrit en
    Juillet 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Prof Maths, ex développeur Assembleur et C

    Informations forums :
    Inscription : Juillet 2016
    Messages : 22
    Par défaut Traitement d'un click sur un linearLayout contenant une classe !?
    Bonjour,
    J'ai une longue expérience du développement, mais je débute complétement en développement en java sous android.
    Voila mon problème actuel (je sais qu'il y en aura d'autres):

    Je sais comment intercepter un clic sur un bouton etc, mais j'ai le bout de code ci-dessous, et je voudrais intercepter un clic sur l'animation graphique contenue dans la classe BalleView.

    J'ai essayé d'implémenté la même méthode que pour un bouton, mais rien ne marche !
    Ci-dessous le début du code présent dans le fichier activity_main.xml. Mon erreur vient-elle de là ?

    Merci de vos lumières,
    Cordialement,
    Bernard

    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
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/principal"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/espace"
            android:clickable="true">
            <com.example.bpell.balle.BalleView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="10"
                android:alpha="1"
                android:id="@+id/balle"
                android:background="#C8C8C8"
                android:clickable="true"/>
        </LinearLayout>
        <LinearLayout

  2. #2
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Il faut que tu crée un OnClickListener, c'est un objet qui va te permettre de réagir à un click sur une vue.
    Une fois ton objet créé, tu lui surcharges la fonction onClick(), tu vas ainsi définir que faire lors du click.
    Puis tu donnes à ton instance de BallView ton instance de OnClickListener en utilisant la fonction setOnCLickListener()

  3. #3
    Membre averti
    Homme Profil pro
    Prof Maths, ex développeur Assembleur et C
    Inscrit en
    Juillet 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Prof Maths, ex développeur Assembleur et C

    Informations forums :
    Inscription : Juillet 2016
    Messages : 22
    Par défaut
    Merci DROWAN de ta réponse.

    Je comprend le début de ta réponse, mais qu'est ce que tu entends par :
    "Puis tu donne à ton instance de BallView ton instance de OnClickListener en utilisant la fonction setOnCLickListener" ?
    Ce qui, dit autrement, revient à dire "Comment fais tu ça ?"

    Bonne journée,
    Bernard

  4. #4
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    J'avoue c'était pas très clair

    Lorsqu'un click est opéré sur une vue, Le système recherche si la vue possède un OnClickListener. Si elle n'en possède pas, rien ne se passe. Si elle en possède un, la fonction onClick() de ce listener sera appelée.

    Ta classe BallView hérite de la classe View, elle possède donc la méthode setOnClickListener(). Cette méthode permet de définir (de donner) ce OnCLickListener.
    Par 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
    public class MyActivity extends Actvity {
     
        //Je définis un objet de type OnClickListener. 
        //Dedans je surcharge la fonction onClick() pour définir la réaction à un click
        private OnClickListener listener = new OnClickListener() {
             @Override
             public void onClick(View v) {
                   //code réagissant à un click
             }
        };
     
        void onCreate (Bundle savedInstanceState) {
            BallView ballView = (BallView) findViewById(R.id.balle); //Je récupère l'objet ballView depuis le layout
            ballView.setOnClickListener(listener); //Je définis quel est le listener qui réagira à un click sur ballView
        }
    Avec ce code, lorsque l'utilisateur clickera sur ta ballView, le système ira chercher si elle possède un OnClickListener. Et c'est le cas puisqu'on la défini en utilisant setOnClickListener(). Donc le système va appeler la fonction onClick() de ce OnCickListener. Ici ça va donc exécuter le code que j'ai symbolisé par //code réagissant à un click

  5. #5
    Membre averti
    Homme Profil pro
    Prof Maths, ex développeur Assembleur et C
    Inscrit en
    Juillet 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Prof Maths, ex développeur Assembleur et C

    Informations forums :
    Inscription : Juillet 2016
    Messages : 22
    Par défaut
    Merci beaucoup DROWAN,
    Ça roule ! Avec tes conseils, en trois minutes ça a marché !
    Bonne journée,

    Bernard

  6. #6
    Membre averti
    Homme Profil pro
    Prof Maths, ex développeur Assembleur et C
    Inscrit en
    Juillet 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Prof Maths, ex développeur Assembleur et C

    Informations forums :
    Inscription : Juillet 2016
    Messages : 22
    Par défaut Activity "noire" !?
    Bonjour,

    J'ai un nouveau petit problème.
    Mon apprentissage de la programmation sous Android se passait très bien jusqu'à hier, où j'ai eu un problème que je n"arrive pas à résoudre.
    J'affiche une Activity et au lieu d'avoir à l'écran ce qui est défini dans mon fichier XML, j'ai un écran noir !
    Voici ci-dessous le code des fichiers decompte.java, activity_decompte et MainActivity, de dernier lançant l'avtivity decompte.
    Si quelqu'un voit ce que j'ai laissé passer, ses remarques seront les bienvenues !
    Merci.
    Bernard alias biouf31

    MainActivity.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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    package com.example.bpell.trounoir;
     
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
     
    public class MainActivity extends AppCompatActivity {
        private boolean choix = false;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate( savedInstanceState );
            setContentView( R.layout.activity_decompte );
     
            Button bPlay = findViewById( R.id.play );
            bPlay.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                startActivity( new Intent( MainActivity.this, decompte.class ) );
    //            startActivity( new Intent( MainActivity.this, Main2Activity.class ) );
                }
            } );
        }
     
    }
    decompte.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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    package com.example.bpell.trounoir;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
     
    //import android.support.v7.app.AppCompatActivity;
    //import android.view.View;
    //import android.widget.Button;
    //import android.widget.TextView;
     
    public class decompte extends Activity {
    //    private TextView dec = null;
        private Button bOk = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate( savedInstanceState );
            setContentView( R.layout.activity_decompte );
     
            bOk = findViewById( R.id.bOk_decompte );
            bOk.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity( new Intent( decompte.this, Main2Activity.class ) );
                }
            } );
            int j = 0;
            long temps1 = System.currentTimeMillis();
            while ((System.currentTimeMillis() - temps1) < 20_000) j = j + 1;
            startActivity( new Intent( decompte.this, Main2Activity.class ) );a
        }
     
    }
    activity_decompte.xml
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/blue"
        android:orientation="vertical" >
     
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/decompte1"
            android:textAlignment="center"
            android:textSize="@dimen/textSizePopup3"
            android:textColor="@color/red"
            android:text="TEST"/>
     
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/bOk_decompte"
            android:text="bouton"/>
     
    </LinearLayout>

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

Discussions similaires

  1. avec click sur un lien, ouvrir une image dans une page html
    Par Bydouille dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/10/2007, 20h40
  2. Réponses: 5
    Dernier message: 26/09/2007, 16h07
  3. Réponses: 12
    Dernier message: 11/10/2006, 22h43
  4. plantage après click sur le OK d'une messageBox
    Par cenedra dans le forum MFC
    Réponses: 7
    Dernier message: 31/07/2006, 08h43
  5. Pb sur un ActiveX contenant une DialogBox
    Par SBP dans le forum MFC
    Réponses: 3
    Dernier message: 06/05/2006, 19h23

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