jfs77 Posté(e) 28 octobre 2010 Share Posté(e) 28 octobre 2010 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 More sharing options...
moritan Posté(e) 28 octobre 2010 Share Posté(e) 28 octobre 2010 utilise un handler pour dialoguer entre entre tes 2 activity. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jfs77 Posté(e) 28 octobre 2010 Auteur Share Posté(e) 28 octobre 2010 Ok, je ne connais pas du tout. Je vasi voir ca de ce pas ! Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
jfs77 Posté(e) 28 octobre 2010 Auteur Share Posté(e) 28 octobre 2010 J'ai vraiment du mal à comprendre l'utilisation du handler. Est ce vous auriez un exemple de code pour mon cas ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 28 octobre 2010 Share Posté(e) 28 octobre 2010 Pose un handler sur ta deuxieme activity sur un slot public pour le récupérer dans ta première activity. Ensuite utilise ce handler dans ta méthode onchangelocation() pour transmettre ta position. imagine que tu tu dialogue entre 2 threads. cf : http://developer.android.com/guide/appendix/faq/commontasks.html#threading Lien vers le commentaire Partager sur d’autres sites More sharing options...
jfs77 Posté(e) 28 octobre 2010 Auteur Share Posté(e) 28 octobre 2010 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 More sharing options...
jfs77 Posté(e) 30 octobre 2010 Auteur Share Posté(e) 30 octobre 2010 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 More sharing options...
jfs77 Posté(e) 1 novembre 2010 Auteur Share Posté(e) 1 novembre 2010 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 More sharing options...
moritan Posté(e) 2 novembre 2010 Share Posté(e) 2 novembre 2010 Désolé je n'i pas eu le temps de revenir sur ce sujet . Content que tu ai trouvé une solution qui te convienne Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.