2011-06-08 7 views
11

J'ai le code suivant dans mon activité. Dans mon fichier XML, la vue vidéo est à l'intérieur de la disposition linéaire. Cependant, lorsque l'utilisateur clique sur la vue, le onTouchListener ne se déclenche jamais. J'ai essayé de changer le onTouchListener en vvLive mais cela n'a rien fait. J'ai également essayé de changer le onTouchListener à un onClickListener, mais rien. Quelqu'un sait pourquoi l'auditeur ne tire pas? Merci.onTouchListener ne fonctionne pas

 private VideoView vvLive; 
     LinearLayout linearLayoutLiveVideo; 

     linearLayoutLiveVideo.setOnTouchListener(new OnTouchListener(){ 
      public boolean onTouch(View v, MotionEvent event){ 
       Log.d(TAG, "onTouch entered"); 
       if(event.getAction() == MotionEvent.ACTION_UP) { 
        Log.d(TAG, "ACTION_UP"); 

       } 
       return false; 
      } 
     }); 

EDIT: j'ai réalisé le code ci-dessus fonctionne réellement. Quelque chose dans Eclipse gâchait LogCat. Après avoir redémarré eclipse, LogCat imprime le premier journal "onTouch". Cependant, "ACTION_UP" n'était pas en cours d'impression. J'ai changé le MotionEvent à MotionEvent.ACTION_DOWN et le LogCat imprime maintenant. Pourquoi fonctionne ACTION_DOWN mais ACTION_UP non?

+0

Ces vues sont-elles celles qui sont affichées dans votre activité? – dmon

+0

la propriété "clicable" de la mise en page est-elle définie sur true? – woodshy

+0

@woodshy ajouter clickable = true n'a rien fait – yellavon

Répondre

30

ACTION_UP est de ne jamais être envoyé à votre écoute parce que vous revenez faux et par conséquent ne pas « consommer » l'événement. Retourne true et vous obtiendrez l'événement start (ACTION_DOWN) ainsi que tous les suivants (ACTION_MOVE puis ACTION_UP).

1

Modifier votre code comme ceci et essayer:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Log.d(TAG, "onTouch entered"); 
    if(event.getAction() == MotionEvent.ACTION_UP) { 
     Log.d(TAG, "ACTION_UP"); 
     return super.onTouchEvent(event); 
    else 
     return false; 
} 
+0

Qu'en est-il du setOnTouchListener. Puis-je toujours l'utiliser? – yellavon

+0

Oui, vous devez utiliser cette ligne. Remplacer les lignes ci-dessous comme je l'ai donné et l'essayer. –

+1

'Erreur: Le nouveau type View.OnTouchListener() {} doit implémenter la méthode abstraite héritée View.OnTouchListener.onTouch (View, MotionEvent)'. Il semble que je ne peux pas utiliser onTouchListner avec onTouchEvent? – yellavon

0

i ont des visages cette question et les solutions est: -

1 dans votre xml définir l'attribut followin à VideoView

android: cliquable = "true"

2- simplement dans votre le jeu de code setOnClickListenau VideoView et il fonctionnera comme charme:

videoView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent=new Intent(CinemaDetailsActivity.this , FullScreenPlayerActivity.class); 
     intent.putExtra("url" , getIntent().getStringExtra("url")); 
     startActivity(intent); 
    } 
});