Utiliser un acceseur
Résolu
Bonjour j'aimerais pouvoir récupérer ma variable time pour pouvoir l'utiliser dans une autre classe mais je ne sais pas comment faire. Voilà mon code android en question:
Merci pour votre aide
public class MainActivity extends Activity {
public int time = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView = new MainSurfaceView(this);
setContentView(mView);
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
time = time++;
}
});
}
}, 0, 1000);
}
}
Merci pour votre aide
1 réponse
-
Modérateurtime est un attribut public, donc il te suffit d'avoir un objet MainActivity pour accéder à cette valeur time.
MainActivity ma = ... int t = ma.time;
Remarque : en général ce genre de code est à éviter, parce que rien ne nous empêche du coup de faire n'importe quoi avec "time", exemple :
ma.time = -42;
Ton code ne fonctionnera probablement plus correctement après une telle modification ! C'est pour ça qu'il vaut mieux encapsuler les données, c'est à dire déclarer "time" private et donner un accesseur (et éventuellement un mutateur) pour pouvoir y accéder sans risque de mal le modifier.
Exemple :
// dans MainActivity private int time = 0; public int getTime() { return time; } public void setTime(int t) { if (t>=0) time = t; } // ailleurs MainActivity ma = ... int t = ma.getTime(); ma.setTime(-42); // sans effet car interdit