2013-05-14 4 views
0

J'essayais de faire un changement de TextView quand je glissais sur l'écran. Je GestureDector.OnGestureListener, et juste le recodé Methode onFling() comme suit:Android: pourquoi un balayage tue-t-il mon application?

@Override 
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent2, float v, float v2) { 
    if (motionEvent.getRawY() < motionEvent2.getRawY()) { 
     ((TextView) findViewById(R.id.textView)).setText("Next"); 
    } else if (moveTaskToBack(motionEvent.getRawY() > motionEvent2.getRawY())) { 
     ((TextView) findViewById(R.id.textView)).setText("Previous"); 
    } 

    return true; 
} 

Mais dans mon cas, pour une raison bizarre, quand je quitte l'application Flick arrête juste (comme je l'ai appuyé sur le bouton d'accueil) .

Ce qui pourrait être à l'origine de cela?

EDIT: si je rouvre l'application et appuie sur le bouton de retour (physique), il montre "précédent", donc je peux conclure que le balayage fonctionne mais que quelque chose se passe après le réglage du TextView.

+2

ajoutez votre sortie logcat. –

+1

Est-ce que l'identifiant donné existe dans votre vue? La cause la plus probable serait findVieByID retournant null. Mais donnez-nous votre logcat pour être sûr. –

+0

J'ai tous les messages de journal de tout sur mon téléphone, y at-il un moyen de les filtrer à seulement celui qu'il obtient de l'application elle-même? – DennisVDB

Répondre

0
findViewById(R.id.textView) 

Cela provoquera une erreur si textView R.id.textView ne figure pas dans la vue de contenu actuelle.

Parfois, avec des remplacements, vous devez faire ceci:

return super.onFling(motionEvent, motionEvent2, v, v2); 
+0

Techniquement, si je peux définir findViewById (R.id.textView) une fois ("next"), je ne devrais pas être préoccupé par le fait que ce n'est pas sur la vue actuelle, mais je pourrais me tromper (android noobie). Aussi, je ne peux pas appeler super.onFling(), il vient d'une interface (OnGestureListener). – DennisVDB

+0

"Je ne devrais pas m'inquiéter du fait que ce n'est pas sur la vue actuelle" Eh bien, c'est vraiment le problème, c'est une exigence idiote que les vues utilisées dans findViewById existe sur la vue actuelle. Peut-être stocker une variable à la portée de la classe, et dans la méthode onCreate l'initialiser à (TextView) findViewById (R.id.textView) et juste opérer cela? – Isaac

+0

J'ai fait ce que vous avez dit mais cela n'a pas changé. Eh bien, le problème devrait être ailleurs. – DennisVDB

Questions connexes