jfs77 Posted October 28, 2010 Share Posted October 28, 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. Link to comment Share on other sites More sharing options...
moritan Posted October 28, 2010 Share Posted October 28, 2010 utilise un handler pour dialoguer entre entre tes 2 activity. Link to comment Share on other sites More sharing options...
jfs77 Posted October 28, 2010 Author Share Posted October 28, 2010 Ok, je ne connais pas du tout. Je vasi voir ca de ce pas ! Merci Link to comment Share on other sites More sharing options...
jfs77 Posted October 28, 2010 Author Share Posted October 28, 2010 J'ai vraiment du mal à comprendre l'utilisation du handler. Est ce vous auriez un exemple de code pour mon cas ? Link to comment Share on other sites More sharing options...
moritan Posted October 28, 2010 Share Posted October 28, 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 Link to comment Share on other sites More sharing options...
jfs77 Posted October 28, 2010 Author Share Posted October 28, 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 ! Link to comment Share on other sites More sharing options...
jfs77 Posted October 30, 2010 Author Share Posted October 30, 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 Link to comment Share on other sites More sharing options...
jfs77 Posted November 1, 2010 Author Share Posted November 1, 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. Link to comment Share on other sites More sharing options...
moritan Posted November 2, 2010 Share Posted November 2, 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 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.