splifou Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 (modifié) 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é 28 mars 2010 par splifou Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 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. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
splifou Posté(e) 28 mars 2010 Auteur Share Posté(e) 28 mars 2010 (modifié) 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é 28 mars 2010 par splifou Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 Heuuu, là on est dans les bases du Java... ce que j'ai appelé monChiffre c'est la valeur que tu veux sauver! Je suppose que ce sera "résultat" ou" balance" dans ton cas! Je compte aussi sur toi pour adapter les int et double ;-) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
splifou Posté(e) 28 mars 2010 Auteur Share Posté(e) 28 mars 2010 (modifié) 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é 28 mars 2010 par splifou Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 (modifié) é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 Click for full size - Uploaded with plasq's Skitch Modifié 28 mars 2010 par Profete162 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
splifou Posté(e) 28 mars 2010 Auteur Share Posté(e) 28 mars 2010 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 ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 Non, à ce stade c'est un tutoriel sur les bases de la programmation dont tu as besoin. Je suis désolé je pense que tu mets la charrue avant les boeufs. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
splifou Posté(e) 28 mars 2010 Auteur Share Posté(e) 28 mars 2010 (modifié) 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é 28 mars 2010 par splifou Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 Fais toi plaisir: http://java.developpez.com/livres/javaEnfants/?page=sommaire Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 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 ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
splifou Posté(e) 28 mars 2010 Auteur Share Posté(e) 28 mars 2010 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. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 28 mars 2010 Share Posté(e) 28 mars 2010 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. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.