Reputation: 122
I'm sorry for mine simple question but I'm newbie this topic. I have Location Class for Android and I reach mine location with Toast Message but I couldn't reach mine location value other class. For example;
My Location Class
import android.app.AlertDialog;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class MyLocation{
private LocationManager locationManager;
LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
}
public class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Bundle bundle = new Bundle();
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
public String getLat(){
return lat.toString();
}
public String getLon(){
return lon.toString();
}
private Double lat;
private Double lon;
}
And I call the
MyLocation myLocation = new MyLocation(getActivity());
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(bundle.getString("lon") != null){
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));
}
}
};
new Thread(runnable).start();
But every time my bundle return to null value. What can i do ?
Upvotes: 2
Views: 172
Reputation: 93842
Because you construct a new Bundle so it can retrieve the datas you saved in your activity.
You can implement the following :
public class MyLocationListener implements LocationListener{
Bundle bundle = new Bundle();
public Bundle getBundle(){
return bundle;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
//other method
}
public class MyLocation{
private LocationManager locationManager;
LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
public Bundle getBundle(){
if(locationListener != null)
return locationListener.getBundle();
else
return null;
}
}
Then just do :
Bundle bundle = myLocation.getBundle();
if(bundle != null){
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));
}
EDIT :
Change private LocationListener locationListener;
with private MyLocationListener locationListener;
Upvotes: 3
Reputation: 122
All of my code;
http://p1305.hizliresim.com/19/h/n2zwm.png
Thank you for your help
package com.example.postproject;
import android.app.AlertDialog;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
public class MyLocation{
private LocationManager locationManager;
private LocationListener locationListener;
private Context ourContext;
public MyLocation(Context context){
this.ourContext = context;
locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 100, locationListener);
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("GPS Disabled");
alertDialog.setMessage("You can enable GPS for settings");
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 100, locationListener);
}
}
public Bundle getBundle(){
if(locationListener != null)
return locationListener.getBundle();
else
return null;
}
public class MyLocationListener implements LocationListener{
Bundle bundle = new Bundle();
public Bundle getBundle(){
return bundle;
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
lat = location.getLatitude();
lon = location.getLongitude();
Toast.makeText(ourContext, lat +" ve "+ lon, Toast.LENGTH_LONG).show();
bundle.putString("lat", lat.toString());
bundle.putString("lon", lon.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
public String getLat(){
return lat.toString();
}
public String getLon(){
return lon.toString();
}
private Double lat;
private Double lon;
}
}
And I use
MyLocation myLocation = new MyLocation(getActivity());
Bundle bundle = myLocation.getBund();
tv1.setText("Lon : " + bundle.getString("lon"));
tv2.setText("Lat : " + bundle.getString("lat"));
Upvotes: 1