Aller au contenu

[RESOLU] variable


jfs77

Recommended Posts

Bonjour tout le monde,

Je me suis lancé dans le développement Android mais j'ai quelques soucis.

Dans mon Activity principale, j'utilise le GPS. Donc je récupère les les coordonnées dans cette première Activity.

J'ai donc par exemple la variable Latitude qui change continuellement.

Dans ma deuxième activity, j'affiche la latitude.

Le problème c'est que je passe une première fois ma variable grace au "bundle" et l'"Instant".

Mais je ne sais pas comment mettre à jour cette variable dans la 2eme activity.

Savez vous commen faire ?

Merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Désolé je débute... Donc le plus simple c'est que je vous montre mon code. Donc j'ai 2 fichiers :

SampleGPS.java:

public class SampleGPS extends Activity implements OnClickListener{

   private LocationManager locationManager;
   private LocationListener locationListener;
   int vitesse=0;

   @Override    
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       /*LocationManager pour obtenir la position GPS*/
       locationManager = (LocationManager)
       getSystemService(Context.LOCATION_SERVICE);
       locationListener = new MyLocationListener();
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
       //On affecte un écouteur d'évènement aux boutons
       findViewById(R.id.compteur).setOnClickListener(this);
   }

   private class MyLocationListener implements LocationListener{
       public void onLocationChanged(Location loc) {
           if (loc != null) {
               /*calcul dde la vitesse*/
               long vit= Math.round(loc.getSpeed()*3.6);
               vitesse = (int)vit;
           }
       }
   }

   public void onClick(View v) {
       Intent i = new Intent(this,Compteur.class);
       Bundle bundle = new Bundle();
       bundle.putSerializable("vitesse",vitesse);
       i.putExtras(bundle);
       //On démarre l'autre Activity
       startActivity(i);
   }    
}

Compteur.java :

public class Compteur extends Activity implements Runnable{
   public Handler handler;
   int vitesse;
   Panel panel;
   Thread h;

   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      panel=new Panel(this);
      setContentView(panel);

      handler = new Handler();
      h =new Thread(this);   
      h.start();
     }

   public class Panel extends View {

       public Panel(Context context) {
           super(context);
       }

       public void onDraw(Canvas canvas) {
           /*Ici je dessine mais ce n'est pas important je pense*/
       }
   }

   @Override
   public void run() {
       while(true){
           vitesse = (Integer)this.getIntent().getSerializableExtra("vitesse");
           panel.postInvalidate();
       }
   }
}

Donc si je saisie bien je dois déclarer mon Handler dans "Compteur.java" et le récupéré dans "sampleGPS.java" ?

@moritant : merci pour l'aide que tu m'apporte !

Lien vers le commentaire
Partager sur d’autres sites

Je commence à bien comprendre le fonctionnement d'un Handler.

Mais il me reste tout de même un grand problème.

Comment ma première classe peut envoyer un message au handler de la deuxième classe.

Mon handler est bien déclaré en public mais je ne vois pas comment y acceder.

Est ce que je dois le passer comme argument dans mon Intent ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Bon finallement vu que je ne trouve pasde réponse à mon problème, j'ai suis parti sur une méthode purement JAVA.

Dans ma seconde Activity, j'ai déclaré une méthode en public et static.

Elle est donc accessible depuis ma première Activity.

Dans l'acitivity 1 (SampleGPS.java)

Compteur.setVitesse(vitesse);

Dans l'acitivity 2 (Compteur.java)

public static void setVitesse(int v){
test=v;	
}

Donc au moins ca fonctionne.

Merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...