Aller au contenu

Code pour garder en mémoire une donnée


splifou

Recommended Posts

Bonjour,

Je voudrais créer une application qui me permet de calculer mes gains ou pertes au poker. J'ai commencé avec une sorte de calculette très simple. D'abord je rentre mon tapis d'entrée et ensuite celui de sortie. Il fait une soustraction et me donne le résultat. Une ligne en dessous y'a ce que j'ai appelé "balance" qui cumul les résultats.

Le problème c'est lorsque je quitte l'application la balance revient à 0. Comment faire pour qu'elle conserve toujours sa valeur ?

Voici mon code java :

public class calculette extends Activity {

private Button abutton;

private Button bbutton;

private Button cbutton;

private EditText aedittext;

private EditText bedittext;

private TextView txttotal;

private TextView txtbalance;

private double tapisin = 0;

private double tapisout = 0;

private double résultat = 0;

private double balance;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initControls();

}

private void initControls()

{

aedittext = (EditText)findViewById(R.id.aedittext);

bedittext = (EditText)findViewById(R.id.bedittext);

txttotal=(TextView)findViewById(R.id.txttotal);

txtbalance=(TextView)findViewById(R.id.txtbalance);

abutton = (Button)findViewById(R.id.abutton);

bbutton = (Button)findViewById(R.id.bbutton);

cbutton = (Button)findViewById(R.id.cbutton);

abutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ calculate(); }});

bbutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ reset(); }});

cbutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ finish(); }});

}

private void calculate()

{

tapisin=Double.parseDouble(aedittext.getText().toString());

tapisout=Double.parseDouble(bedittext.getText().toString());

résultat=tapisout-tapisin;

txttotal.setText(Double.toString(résultat));

balance=balance+résultat;

txtbalance.setText(Double.toString(balance));}

private void reset()

{

aedittext.setText("");

bedittext.setText("");

txttotal.setText("");

}}

Modifié par splifou
Lien vers le commentaire
Partager sur d’autres sites

Tu as le choix:

1) créer une base de données sqllite, ce qui semble un peu lourd pour ton appli

2) l'enregister comme préférence: simple et efficace pour un seul chiffre:

en quittant:

SharedPreferences settings =PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = settings.edit();
editor.putInt("monchiffre",monChiffre);
// Don't forget to commit your edits!!!
editor.commit();

en revenant:

monChiffre=settings.getInt("monchiffre",0);

Au plaisir.

Lien vers le commentaire
Partager sur d’autres sites

Merci

J'ai collé le code en quittant avant mon finish (quand j'appuie sur le bouton c) mais il me souligne en rouge le deuxième monChiffre

et pour celui en revenant je l'ai mis après private void initControls(){ mais il me souligne en rouge le premier monchiffre et le settings

Qu'est ce que j'ai mal fait ? :|

jsé pas si c'est bon mais J'ai rajouté avec les private : int monChiffre; et ça a fait disparaitre le pb pour mon chiffre mais settings reste souligné en rouge

Modifié par splifou
Lien vers le commentaire
Partager sur d’autres sites

lol Merci

Alors comme je pouvais pas à la fois avoir balance en double et en int j'ai trouvé comme solution de créer une troisième ligne avec solde que j'ai mis en int. c bien ça ?

Par contre j'ai toujours ce settings qui est souligné en rouge et j'ai aucune idée de quoi faire.

ps : je sais pas pourquoi mais j'ai mis editor.putInt("balance",solde); peut être faut solde solde ?

Voici le code que j'ai mis pour l'instant :

public class calculette extends Activity {

private Button abutton;

private Button bbutton;

private Button cbutton;

private EditText aedittext;

private EditText bedittext;

private TextView txttotal;

private TextView txtbalance;

private TextView txtsolde;

private double tapisin = 0;

private double tapisout = 0;

private double résultat = 0;

private double balance;

int solde;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initControls();

}

private void initControls()

{

solde=settings.getInt("solde",0);

aedittext = (EditText)findViewById(R.id.aedittext);

bedittext = (EditText)findViewById(R.id.bedittext);

txttotal=(TextView)findViewById(R.id.txttotal);

txtbalance=(TextView)findViewById(R.id.txtbalance);

txtsolde=(TextView)findViewById(R.id.txtsolde);

abutton = (Button)findViewById(R.id.abutton);

bbutton = (Button)findViewById(R.id.bbutton);

cbutton = (Button)findViewById(R.id.cbutton);

abutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ calculate(); }});

bbutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ reset(); }});

cbutton.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){

SharedPreferences settings =PreferenceManager.getDefaultSharedPreferences(getBaseContext());

SharedPreferences.Editor editor = settings.edit();

editor.putInt("balance",solde);

editor.commit();

finish(); }});

}

private void calculate()

{

tapisin=Double.parseDouble(aedittext.getText().toString());

tapisout=Double.parseDouble(bedittext.getText().toString());

résultat=tapisout-tapisin;

txttotal.setText(Double.toString(résultat));

balance=balance+résultat;

txtbalance.setText(Double.toString(balance));

txtsolde.setText(Double.toString(balance));

}

private void reset()

{

aedittext.setText("");

bedittext.setText("");

txttotal.setText("");

}}

Modifié par splifou
Lien vers le commentaire
Partager sur d’autres sites

écoute..

Dans ton code normal.. si tu mets: "résultat=60;int résultat;" ca va mettre en rouge aussi,

tu dois déclarer ta variable avant: "int résultat; résultat =60;" là ca va fonctionner

même chose pour settings, il ne sait pas ce que c'est settings... Tu dois lui dire AVANT

Je t'invite à essayer de faire de petits programmes en java avant même d'essayer des choses sans comprendre

20100328-dd2dttgkcee314pgy8uddb3pi3.preview.jpg

Click for full size - Uploaded with plasq's Skitch

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

je comprends alors du coup j'ai mis au dessus de solde=... Shared....editor.....

Et settings n'est plus souligné par contre le solde ce remet toujours à 0 quand je quitte l'application

Peut etre un tutoriel sur le cycle d'une application ça peut m'aider ?

Lien vers le commentaire
Partager sur d’autres sites

tu sais où je peux trouver ce tuto sur les bases ? j'avais regardé des cours de java mais ça avait rien à voir avec ce que je veux faire sous android.

faudrait que je trouve un bon tutoriel pour utiliser une base de donnée sql parce qu'après avoir garder mon résultat en mémoire jvais vouloir garder plein d'autres trucs et faire plein de calcul et je voudrais des graphiques et les dates des résultats etc... jcrois c mort!

Modifié par splifou
Lien vers le commentaire
Partager sur d’autres sites

jcrois c mort!
Meuh non c'est pas mort, ça va être long c'est tout ;)

Et quand je dis long... c'est plusieurs mois hein :) L'important étant de ne pas vouloir aller trop vite sinon tu vas faire n'importe quoi et te retrouver coincé très rapidement, et de ne pas non plus vouloir être trop perfectionniste sinon ça va finir par te démotiver.

Tu vas te fixer des objectifs correspondant à tes étapes d'apprentissage au fur et à mesure que tu avanceras, et ça va bien se passer ;)

Lien vers le commentaire
Partager sur d’autres sites

J'ai regarder les cours de java...

Rien qu'un code java pour soit disant enregistrer un score ne marche pas du tout : int monScore = 10;

monScore--;

monScore = monScore * 2;

monScore = monScore / 3;

System.out.println("Mon score est " + monScore);

Sinon j'ai rien trouvé qui s'approche de ce que je veux faire à savoir qu'un nombre décimal soit garder en mémoire et qu'il revienne quand j'ouvre de nouveau l'application.

Lien vers le commentaire
Partager sur d’autres sites

Pense au contexte, refléchis à ce que tu fais, c'est le seul moyen d'avancer... Un code ne va pas simplement "ne pas marcher", cette notion de "ça marche pas" doit être bannie de ton vocabulaire en tant que développeur. "ça marche pas" doit être traduit par la description exacte du problème, ce qui prouve déjà un certain cheminement intellectuel nécessaire !

Enfin, quand je te disais de penser au contexte : as-tu simplement regardé ce que "System.out.println" était censé faire ?

Il écrit sur "la sortie standard", cette notion dépendant évidemment du contexte d'exécution. Donc crois-moi, il a écrit quelque part, simplement tu n'as peut-être pas vu où. En l'occurrence il a du écrire dans les logs Android (onglet LogCat dans Eclipse).

Pour "voir" quelque chose dans une application Android il faut l'afficher quelque part, donc ajouter un composant TextView dans ton layout, et modifier son libellé avec ce que tu veux afficher par exemple.

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...