2017-06-22 2 views
0

Je crée un jeu qui enregistre le meilleur temps dans un SharedPreferences. Voici la méthode exécutée lorsque le joueur gagne. Comme vous pouvez le voir, il ne stocke l'heure de la partie en cours que si elle est meilleure que le meilleur moment.Boolean contenant SharedPreferences ne fonctionne pas

Voici le code onCreate qui charge et affiche le meilleur moment:

TextView bestScore = (TextView) findViewById(R.id.bestScore); 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    if (sharedPreferences.getLong("best", 2147483647) < 2147483647){ 
     int min = (int) Math.floor(sharedPreferences.getLong("best", 2147483647)/60000); 
     int sec = Math.round((sharedPreferences.getLong("best", 2147483647) - min)/1000); 
     String mm = "" + min; 
     String ss = "" + sec; 
     if (min < 10){ 
      mm = "0" + min; 
     } 
     if (sec < 10){ 
      ss = "0" + sec; 
     } 
     String bestTime = mm + ":" + ss; 
     bestScore.setText("Best: " + bestTime); 
    } 

Mais, pour une raison quelconque, il met constamment à jour le meilleur temps à chaque fois que le joueur gagne, même si le temps est pire. Aidez-moi, s'il vous plaît.

+0

Je pense que le calcul de temps écoulé peut avoir des problèmes, essayez d'imprimer la valeur de temps écoulé au moment de la victoire. – NehaK

+0

Non, je ne le pense pas car le "meilleur" TextView affiche correctement l'heure du jeu précédent, mais ce n'est pas le meilleur moment. –

+0

ce point-virgule après si l'instruction dans la méthode victory() est une faute de frappe? –

Répondre

1

Il existe un point-virgule après l'instruction if dans votre méthode victory().

if (elapsedTime < sharedPreferences.getLong("best", 2147483647));{ 
    sharedPreferences.edit().putLong("best", elapsedTime).apply(); 
} 

supprimez juste cela et vous êtes prêt à partir.