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 :

Pas de réponse à un onTouch de la fenêtre principale


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 090
    Points : 1 055
    Points
    1 055
    Par défaut Pas de réponse à un onTouch de la fenêtre principale
    Bonjour à toutes et à tous,

    Dans une application, j'ai une vue principale de type RelativeLayout fntrPrinc = (RelativeLayout)findViewById(R.id.FntrPrinc); qui contient d'autres vues dont un autre RelativeLayout fntrPrinc = (RelativeLayout)findViewById(R.id.affCarte);.

    J'ai affecté un listener à affCarte comme suit :

    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
    	affCarte.setOnTouchListener(new View.OnTouchListener() { // Déplacement de la carte par touché de l'écran
    		@Override
    		public boolean onTouch(View v, final MotionEvent event) {
    			int action = event.getAction();
    			if (action == MotionEvent.ACTION_DOWN) {
    				xd = event.getX();
    				yd = event.getY();
    			} 
    			if (action == MotionEvent.ACTION_MOVE) {
    				deplaceAff(event.getX(), event.getY());
    			} 
    			if (action == MotionEvent.ACTION_UP) {
    				...
    			}
    		return false;
    	}
    	});
    Cela fonctionee très bien.

    Maintenant, j'affecte le même type de listener à la vue principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	fntrPrinc.setOnTouchListener(new View.OnTouchListener() {
    		@Override
    		public boolean onTouch(View v, final MotionEvent event) {
    			...
    			return true;
    		}
    	});
    Et bien là, lorsque j'appuie sur mon écran, ce onTouch ne reçoit rien ???

    Des idées du pourquoi du comment ?

    Merci de vore aide.

    Pierre

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Bonjour,

    Returns

    True if the listener has consumed the event, false otherwise.
    Lorsqu'un événement est envoyé, qui le traite ? Possiblement, plusieurs objets. Celui qui "consomme" l'évènement, c'est-à-dire qui stoppe sa propagation, est celui qui renvoie vrai.

    Donc, dans ton second cas, le fait de renvoyer true stoppe une propagation nécessaire de l'évènement dans l'ensemble des objets concernés.
    Est-ce clair ?

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 090
    Points : 1 055
    Points
    1 055
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    ... Donc, dans ton second cas, le fait de renvoyer true stoppe une propagation nécessaire de l'évènement dans l'ensemble des objets concernés.
    Est-ce clair ?
    Oui, c'est clair. Pour autant le problème n'est pas là. Le problème est que lorsque j’appuie sur l'écran, la procédure onTouch de fntrPrinc n'est même pas parcourue. Donc que j'y mette return true ou false, cela ne change rien.

    Je dirais même plus (), avec un return true, le RelativeLayout affCarte qui est contenu dans FntrPrinc ne devrait pas recevoir les évènements, or, il les reçoit tous !!!

    Le problème est bien que la procédure onTouch de fntrPrinc n'est même pas parcourue.

    Cordialement.

    Pierre

Discussions similaires

  1. Serveur Client : pas de réponse !
    Par Canopus dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 20/06/2007, 15h02
  2. Réponses: 7
    Dernier message: 25/08/2006, 14h15
  3. [VB6] pas de réponse du code
    Par ashen dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/06/2006, 16h01
  4. Ne pas afficher la fenêtre principale
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/10/2005, 00h04

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