-1
votes

Countowntymer Annuler Crase l'application lorsque vous cliquez sur le bouton

J'essaie de créer un CountownTimer mais, chaque fois que je clique sur le bouton, l'application se bloque. Je veux que si je clique sur lecteur1 bouton le compte à rebours de joueur2 doit faire une pause et vice versa pour joueur2 .

L'erreur que je suis Obtenir:

tentative d'invoquer la méthode virtuelle 'Void android.os.countdowntimer.cancel () 'sur une référence objet nulle

Voici le code xxx


1 commentaires

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


3 Réponses :


0
votes

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 xxx


0 commentaires

0
votes

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();
}


0 commentaires

0
votes

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();
        }
    });


0 commentaires