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 :

[intent swipe] public static


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 14
    Points
    14
    Par défaut [intent swipe] public static
    bonjour,
    dans une activité j'utilise les gestures pour détecter un swipe gauche ou droit, si l'événement est detecté je veux passer à une autre activité

    voici ma classe SwipeDetector.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
    public class SwipeDetector implements OnGestureListener {
    	 private static final int SWIPE_MIN_DISTANCE = 120;
    	   private static final int SWIPE_MAX_OFF_PATH = 250;
    	   private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    	  @Override
          public boolean onFling( MotionEvent e1, MotionEvent e2, float velocityX, float velocityY ) {
     
             // Check movement along the Y-axis. If it exceeds SWIPE_MAX_OFF_PATH,
             // then dismiss the swipe.
             if( Math.abs( e1.getY() - e2.getY() ) > SWIPE_MAX_OFF_PATH )
                return false;
     
             // Swipe from right to left.
             // The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE)
             // and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
             if( e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs( velocityX ) > SWIPE_THRESHOLD_VELOCITY ) {
               MixDetail.next();
     
                return true;
             }
     
             // Swipe from left to right.
             // The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE)
             // and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
             if( e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs( velocityX ) > SWIPE_THRESHOLD_VELOCITY ) {
              //  previous();
            	 MainApp.log("prev");
                return true;
             }
     
             return false;
          }
    	@Override
    	public boolean onDown(MotionEvent e) {
    		// TODO Auto-generated method stub
    		return false;
    	}
    	@Override
    	public void onLongPress(MotionEvent e) {
    		// TODO Auto-generated method stub
     
    	}
    	@Override
    	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
    			float distanceY) {
    		// TODO Auto-generated method stub
    		return false;
    	}
    	@Override
    	public void onShowPress(MotionEvent e) {
    		// TODO Auto-generated method stub
     
    	}
    	@Override
    	public boolean onSingleTapUp(MotionEvent e) {
    		// TODO Auto-generated method stub
    		return false;
    	}
     
    }
    qui va chercher dans mon activité principale
    cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public static void next(){
    		   MainApp.log("next");
    		  Intent intent = new Intent(MixDetail.this, AboutActivity.class );startActivity(intent);	
     
    	   };
    en revanche je ne peux pas dans cette classe static appeler un nouvel intent
    j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cannot make a static reference to the non-static method startActivity(Intent) from the type 
    	 Activity
    	- Cannot use this in a static context
    merci

  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 : 40
    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
    Points : 4 240
    Points
    4 240
    Par défaut
    pourqoi ta méthode est static dans ton activité principale ?
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par MrDuChnok Voir le message
    pourqoi ta méthode est static dans ton activité principale ?
    si je la passe en non static j'ai cette erreur dans swipedetector.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Cannot make a static reference to the non-static method next() from the type 
     MixDetail

  4. #4
    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 : 40
    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
    Points : 4 240
    Points
    4 240
    Par défaut
    Il faut que tu passes les instances de tes activités à ton custom listener, faut pas mettre une méthode static uniquement parce qu'elle est pas accessible facilement

    Il ne faut pas oublier de faire un minimum de conception / d'architecture technique sur une application, ça permet d'éviter de faire du code in-maintenable / pas logique.
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par MrDuChnok Voir le message
    Il faut que tu passes les instances de tes activités à ton custom listener, faut pas mettre une méthode static uniquement parce qu'elle est pas accessible facilement

    Il ne faut pas oublier de faire un minimum de conception / d'architecture technique sur une application, ça permet d'éviter de faire du code in-maintenable / pas logique.
    ok etc omment je fais pour passer une instance à mon custom listener ?

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par freaks Voir le message
    ok etc omment je fais pour passer une instance à mon custom listener ?
    Code java : 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 SwipeDetector implements OnGestureListener {
        private final MixDetail myActivity;
     
        public SwipeDetector(MixDetail a) {
            this.myActivity = a;
        }
     
        @Override
        public boolean onFling(...) {
            ...
            this.myActivity.next();
            ...
        }
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Code java : 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 SwipeDetector implements OnGestureListener {
        private final MixDetail myActivity;
     
        public SwipeDetector(MixDetail a) {
            this.myActivity = a;
        }
     
        @Override
        public boolean onFling(...) {
            ...
            this.myActivity.next();
            ...
        }
    }
    ok je commence à comprendre la manip
    en revanche dans mon activité principale
    j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Multiple markers at this line
    	- The constructor SwipeDetector() is undefined
    	- The constructor GestureDetector(GestureDetector.OnGestureListener) is 
    	 deprecated
    du coup j'ai modif par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      gestureDetector = new GestureDetector( new SwipeDetector(null) );
    mais j'ai cette erreur
    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
    11-08 14:13:19.671: E/AndroidRuntime(11327): FATAL EXCEPTION: main
    11-08 14:13:19.671: E/AndroidRuntime(11327): java.lang.NullPointerException
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at com.xxxx.mix.SwipeDetector.onFling(SwipeDetector.java:34)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at android.view.GestureDetector.onTouchEvent(GestureDetector.java:568)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at com.xxxx.mix.MixDetail.dispatchTouchEvent(MixDetail.java:121)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1791)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1794)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at android.os.Looper.loop(Looper.java:143)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at android.app.ActivityThread.main(ActivityThread.java:4717)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at java.lang.reflect.Method.invokeNative(Native Method)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at java.lang.reflect.Method.invoke(Method.java:521)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    11-08 14:13:19.671: E/AndroidRuntime(11327): 	at dalvik.system.NativeStart.main(Native Method)
    avant l'appel de cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	   public void next(){
    		   MainApp.log("next");
     
    		   try {
    			   Intent intent = new Intent(MixDetail.this, HomeActivity.class );
    			   startActivity(intent);
    			} catch (Exception e) {
    				MainApp.log("next error => "+e);
    			}
     
     
    	   }

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class MixDetail extends Activity {
     
        ...
        gestureDetector = new GestureDetector( new SwipeDetector(this) );
        ...
     
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. Methode public static void main (String [] args)
    Par jeremypd dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/01/2017, 10h53
  2. public static function = public function
    Par Jcpan dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2009, 15h28
  3. Protection d'un tableau public static final
    Par sachem dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 07/02/2009, 21h20
  4. Différence entre public static
    Par moooona dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 24/05/2008, 15h23
  5. public static []tableau (double []tableau) ?
    Par rXpCH dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/02/2008, 08h34

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