J'essaie de créer un CountownTimer em> mais, chaque fois que je clique sur le bouton, l'application se bloque.
Je veux que si je clique sur lecteur1 em> bouton le compte à rebours de joueur2 em> doit faire une pause et vice versa pour joueur2 em>. L'erreur que je suis Obtenir: strong> p> tentative d'invoquer la méthode virtuelle 'Void
android.os.countdowntimer.cancel () 'sur une référence objet nulle p>
blockQuote> Voici le code strud> p>
3 Réponses :
Vous n'imprimez pas que lorsque vous cliquez sur l'auditeur appelé
Je l'ai réparé pour moi-même en ajoutant essayer de prendre des lignes .Cancel
ou définir
joueur2Count code> est uniquement initialisé à l'intérieur
startcountdown2 code>, qui est uniquement appelé intérieur
player2.setonclicklistener code>. Par conséquent, si vous cliquez sur le bouton
lecteur1 CODE> avant de vous cliquer sur le bouton
Player2 CODE>, vous obtiendrez un
nullpointeException code>, car appelant
player2count .Cancel () code> sur un
joueur2Count Initialisé code> n'est pas autorisé. Pour éviter que cela se produise, il serait approprié de simplement vérifier que NULL dans ce cas:
if (player2count != null) {
player2count.cancel();
}
Ne faites rien d'annuler les chronomètres à moins qu'ils ne soient supportés, il apportera NPE, alors vérifiez si elles ne sont pas nulles dans les deux joueurs comme en dessous de
player1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startCountDown(player1); if (player2count != null) player2count.cancel(); } }); player2.setText(timeFormatted); player2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startCountDown2(player2); if (player1count != null) player1count.cancel(); } });
Le nombre de joueurs sera null jusqu'à ce que vous cliquez sur le bouton Player2. Si vous cliquez sur le bouton Player1 avant de cliquer sur le bouton Player2, le nombre de joueurs sera null / non initialisé. Donc il se bloque