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