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 :

comment utiliser l'héritage


Sujet :

Android

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut comment utiliser l'héritage
    Bonjour,

    Je voudrais savoir comment appliquer des méthodes qui sont dans une classe dans deux autres classes en utilisant l'héritage.
    J'ai donc une classe main.java et deux autres classes activité_un.java pour l' activité_un.xml et activité_deux.java pour activité_deux.xml.

    Main.java affiche dans un textView le nom des gestes que l'on a fait soit dans activité_un.xml soit dans activité_deux.xml.
    (le textView est présent dans les deux activités .xml)

    Main.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
    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
     
    public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener
    {
     
        public TextView geste;
     
        public static final int SWIPE_THRESHOLD = 100;
        public static final int SWIPE_VELOCITY_THRESHOLD = 100;
     
        public GestureDetectorCompat mDetector;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            mDetector = new GestureDetectorCompat(this,this);
            mDetector.setOnDoubleTapListener(this);
     
            geste = (TextView) findViewById(R.id.txtGeste);
     
     
        }
     
        // Gestes Courant \\
     
        @Override public boolean onTouchEvent(MotionEvent event)
        {
            this.mDetector.onTouchEvent(event);
            return super.onTouchEvent(event);
        }
     
        @Override
        public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
            geste.setText("SingleTap");
            return true;
        }
     
        @Override
        public boolean onDoubleTap(MotionEvent motionEvent) {
            geste.setText("DoubleTap");
            return true;
        }
     
        @Override
        public boolean onDoubleTapEvent(MotionEvent motionEvent) {
            geste.setText("DoubleTapEvent");
            return true;
        }
     
        @Override
        public boolean onDown(MotionEvent motionEvent) {
            geste.setText("Down");
            return true;
        }
     
        @Override
        public void onShowPress(MotionEvent motionEvent) {
            geste.setText("ShowPress");
        }
     
        @Override
        public boolean onSingleTapUp(MotionEvent motionEvent) {
            geste.setText("SingleTapUp");
            return true;
        }
     
        @Override
        public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            geste.setText("Scroll");
            return true;
        }
     
        @Override
        public void onLongPress(MotionEvent motionEvent) {
            geste.setText("LongPress");
        }
     
        @Override
        public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            geste.setText("Fling");
     
            boolean result = false;
            try
            {
                float diffY = motionEvent1.getY() - motionEvent.getY();
                float diffX = motionEvent1.getX() - motionEvent.getX();
                if (Math.abs(diffX) > Math.abs(diffY)) {
                    if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(v) > SWIPE_VELOCITY_THRESHOLD)
                    {
                        if (diffX > 0) {onSwipeRight();}
                        else {onSwipeLeft();}
                    }
                    result = true;
                }
            }
     
            catch(Exception exception){}
            return result;
        }
     
       public void onSwipeRight() { geste.setText("Swipe Droit"); }
       public void onSwipeLeft() { geste.setText("Swipe Gauche"); }

    Activity_un.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class Activity_un extends Main { ??? }

    Activity_deux.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class Activity_deux extends Main { ??? }

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    A partir du moment ou une méthode est au moins protected dans ta classe mère , tu peux l'utiliser dans tes classes filles
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    Mais si je veux ajouté le même texte dans un texteView pour qu'il soit visible dans les deux activités comment je dois faire ?
    Dans le Main.java je mets dans le texteView le nom du geste courant et qu'on soit dans l'activité un ou deux on voit le nom du geste qu'on fait dans le textView.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Dans le code que tu montre c'est MainActivity qui choisi la vue à afficher , donc tes 2 autres activities n'ont pas vraiment lieux d'exister.
    Si tes deux activities on effectivement une interface différente il faut faire quelque chose comme :

    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
    public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener
    {
     
        public TextView geste;
     
        public static final int SWIPE_THRESHOLD = 100;
        public static final int SWIPE_VELOCITY_THRESHOLD = 100;
     
        public GestureDetectorCompat mDetector;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            mDetector = new GestureDetectorCompat(this,this);
            mDetector.setOnDoubleTapListener(this);
     
        }
     
        // Gestes Courant \\
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Activity_un extends MainActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_un); //On choisi la vue à afficher
            geste = (TextView) findViewById(R.id.gesteActivity1); // On défini le txtview qui va afficher les gestes
        }
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,
    Une dernière question ^^, dans la classe Main donc la classe mère je définie des méthodes mais je ne dis pas ce qu'elles font et c'est dans la classe fille activité_un.java que je les définie.
    J'ai fais donc ceci, ça marche mais ça marche aussi même si je ne mets pas abstract et je voudrais savoir si c'était mieux de mettre abstract ou non pour les bonnes manières de coder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public abstract class MainActivity ... 
    { 
         ...
        public void FonctionADefinir(){ }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Activity_un extends MainActivity 
    {
       public void FonctionADefinir()
      {
        //je fais des trucs 
       }
    }

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    C'est 2 cas différents.

    Si tu as besoin d'avoir une fonction qui se partage dans toutes les classes filles , tu l'a déclare et défini dans la classe mère. Les classes filles peuvent ensuite l'utiliser.

    Si au contraire tu veux que certaines fonctions existent dans toutes les classes filles mais qu'elles aient un comportement différent tu les rends abstraites pour forcer leur implémentation dans les classes filles
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    ok merci de votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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