Question

Je suis en train de créer une activité de fin de partie pour mon jeu Hangman pour Android et je vais avoir quelques problèmes de commettre des valeurs autres que les chaînes.

Voici mon activité principale:

package com.assignment.hangman;
import android.app.Activity;


public class HangmanActivity extends Activity {
    public static final String GAME_PREFERENCES = "Game Preferences";
    public static final String GAME_LOGIC = "Game Logic";
    public static final String GAME_LOGIC_GUESS = "Guessed letter";
    public static final String GAME_LOGIC_SCORE_STRING = "Unknow score";
    public static final boolean GAME_LOGIC_WIN_LOOSE = false;
}

Je reçois les sharedprefs comme ceci:

mGameSettings = getSharedPreferences("GAME_PREFERENCES", Context.MODE_PRIVATE);

Et c'est là quelque chose va mal au moment de commettre les modifications apportées à l'éditeur:

public void finishGame() {
        //Commit different game variables so they can be used in the end game activity  
        Editor editor = mGameSettings.edit();
        editor.putString(GAME_LOGIC_SCORE_STRING, (tries + " of " + numberOfLives + " used"));
        if (tries != numberOfLives){
            editor.putBoolean("GAME_LOGIC_WIN_LOOSE", true);
        }
        editor.commit();
        // Launch end game Activity
        startActivity(new Intent(HangmanGameActivity.this, HangmanEndActivity.class));
    }

Et après l'activité i changement REFETCH les valeurs comme ceci:

        if (mGameSettings.contains("GAME_LOGIC_WIN_LOOSE")) {
        Log.i(GAME_DEBUG, "Succes");
        boolean winLoose = mGameSettings.getBoolean("GAME_LOGIC_WIN_LOOSE", false);
        if (winLoose) {
            winLooseView.setText(R.string.you_win);
        } else {
            winLooseView.setText(R.string.you_loose);
    }
    }

Mais en quelque sorte que la chaîne est correctement engagée. Je suppose que la valeur booléenne revient à la valeur par défaut false.

aide quelqu'un pourrait-il me faire la lumière sur ce sujet?

Était-ce utile?

La solution

Si vous ne souhaitez que déplacer les données d'une activité à une autre j'attacher à l'intention. L'écriture à des moyens de mémoire partagée accès au stockage du téléphone et qui est vraiment lent.

Vous pouvez le faire de cette façon:

Intent intent = new Intent(HangmanGameActivity.this, HangmanEndActivity.class);
intent.putExtra(GAME_LOGIC_SCORE_STRING, tries + " of " + numberOfLives + " used"):
intent.putExtra("GAME_LOGIC_WIN_LOOSE", true);  
startActivity(intent);

Dans le EndActivity vous faire:

Intent intent = getIntent();
String gameString = intent.getStringExtra(GAME_LOGIC_SCORE_STRING, "default value");
boolean win = intent.getBooleanExtra(GAME_LOGIC_WIN_LOOSE, false);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top