Avant de me lancer, je suis très nouveau sur Android et je viens d'apprendre le Java le mois dernier. J'ai frappé des bosses en essayant de développer ma première application simple. La plupart de ces obstacles ont été sautés grâce à des tutoriels aléatoires en ligne. MON CODE EST TRÈS MESSÉ. Tous les conseils sont appréciés.Comment changer les variables de différentes classes?
La question ci-dessus est assez large, mais c'est ce que je veux faire: C'est essentiellement un calculateur de teneur en alcool dans le sang/gardien de boissons-traqueur. Structure de base: http://i.imgur.com/JGuh7.jpg
Les boutons en bas ne sont que des boutons réguliers, pas ImageButtons (eu des problèmes avec cela) Voici quelques exemples de code d'un:
<Button android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_marginRight="5dp"
android:background="@drawable/addbeer"/>
Les boutons et TextView sont tous dans main.xml .
I ont des variables définies dans une classe appelée Global.java:
package com.dantoth.drinkingbuddy;
importation android.app.Activity;
public class mondial étend l'activité {
public static double StandardDrinks = 0;
public static double BeerOunces = 12;
public static double BeerPercentAlcohol = .05;
public static double BeerDrink = BeerOunces * BeerPercentAlcohol;
public static double BeerDrinkFinal = BeerDrink * 1.6666666;
public static double ShotOunces = 1.5;
public static double ShotPercentAlcohol = .4;
public static double ShotDrink = ShotOunces * ShotPercentAlcohol;
public static double ShotDrinkFinal = ShotDrink * 1.6666666;
public static double WineOunces = 5;
public static double WinePercentAlcohol = .12;
public static double WineDrink = WineOunces * WinePercentAlcohol;
public static double WineDrinkFinal = WineDrink * 1.6666666;
public static double OtherOunces;
public static double OtherPercentAlcohol;
public static double OtherDrink = OtherOunces * (OtherPercentAlcohol * .01);
public static double OtherDrinkFinal = OtherDrink * 1.6666666;
public static double GenderConstant = 7.5; //9 for female
public static double Weight = 180;
public static double TimeDrinking = 60;
public static double Hours = TimeDrinking/60;
public static double Bac = ((StandardDrinks/2) * (GenderConstant/Weight)) - (0.017 * Hours);
}
La dernière variable est la partie importante. Il calcule votre taux d'alcoolémie en fonction des facteurs impliqués. Lorsque j'appuie sur le bouton ajouter de la bière (Button01), je l'ajoute 1 à StandardDrinks, simulant une bière. Les autres variables de la formule Bac ont des valeurs qui leur sont assignées dans Global.java.
Le code qui rend le bouton de bière faire des choses est dans ma classe régulière, drinkingbuddy.java:
public class DrinkingBuddy extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Global.StandardDrinks = Global.StandardDrinks + Global.BeerDrinkFinal;
Toast.makeText(DrinkingBuddy.this, "Mmmm... Beer", Toast.LENGTH_SHORT).show();
}
});
Par ma perception, StandardDrinks devrait maintenant avoir une valeur de 1. Toutefois, lorsque je clique sur le Calculer Bouton BAC (Button05) il sort simplement la variable Bac comme si StandardDrinks était encore réglé sur 0. Voici le code pour le bouton Calculate BAC (Button05):
Bouton button4 = (Bouton) findViewById (R.id.Button05) button4.setOnClickListener (nouveau {
TextView texty;
texty = (TextView) findViewById(R.id.texty1);
texty.setText("Your BAC is " + Global.Bac);
}
});
OnClickListener() { @Override public void onClick (Voir v) Il produit les éléments suivants à la vue du texte:. "Votre taux d'alcoolémie est -0,017" C'est le Bac valeur pour si StandardDrinks était encore 0, donc évidemment il ya un problème de communication entre les classes.Quelqu'un peut-il m'aider ??
Les autres éléments de la formule (poids, temps passé à boire, et l'alcool% et autres) sont des variables parce que je vais finalement permettre à l'utilisateur de changer ces valeurs dans les paramètres
J'ai entendu dire autour du refroidisseur d'eau que les variables globales ne sont pas un bon style de programmation, mais c'est le plus proche que je suis venu de le faire fonctionner. Toutes les autres façons de le faire sont très bien accueillies!
Le point 1 est erroné. Je pense que vous voulez dire que les variables définies comme «définitives» ne peuvent pas être modifiées. Déclarer 'statique' signifie qu'il y a une variable pour la classe, au lieu d'une pour l'instance. Le point 2 est correct. –