0

I am beginner in android. I am now learning dagger 2 dependency injection. I am coding an app which update the latitude and longitude to the textview screen. I don't know, how i would I update the location coordinates to the textview screen as i did the coding of onLocationChanged in the module class and I am injecting the class to the main activity.

  1. I did the coding of getting the location update in LocationManager class.

  2. I can show the updated coordinates using toast, but not able to change textview, is there any way to do this ?

The code in the main activity

public class MainActivity extends AppCompatActivity {
@Inject
LocationManager locationManager;
@InjectView(R.id.textView2)
TextView addressLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.inject(this);
    MyApplication.inject(this);
    locationManager.GetLocation();
}   
}

I like to update the addressLocation textview with the coordinates that i am getting from LocationListener.

package com.test.xyz.daggersample1.service.impl;
public class LocationManager {
Geocoder geocoder;
List<Address> addresses;
private double lattitude = 0;
private double longitude = 0;
private Context context;

public LocationManager(Context context) {
    this.context = context;
}

public String GetLocation() {
    final String[] address = new String[1];
    android.location.LocationManager locationManager = (android.location.LocationManager) context.getSystemService(LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return "";
    }
    geocoder = new Geocoder(context, Locale.getDefault());
    LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            longitude = location.getLongitude();
            lattitude = location.getLatitude();
            //     dialog.dismiss();
            Toast.makeText(context, "Got the Longitude as " + longitude + " Lattitude as " + lattitude, Toast.LENGTH_SHORT).show();         
 **I like to pass these location values to the textview in the main activity**
            try {
                addresses = geocoder.getFromLocation(lattitude, longitude, 1);
                address[0] = addresses.get(0).getAddressLine(0);
            } catch (IOException e) {
                e.printStackTrace();
            }
            Toast.makeText(context, "Got the Longitude as " + longitude + " Lattitude as " + lattitude, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {
        }

        @Override
        public void onProviderEnabled(String s) {
        }

        @Override
        public void onProviderDisabled(String s) {
            Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            context.startActivity(i);
        }
    };

    locationManager.requestLocationUpdates(android.location.LocationManager.GPS_PROVIDER, 2000, 10, listener);
    return address[0];
}
}

My project folder

SUHAS REKHU
  • 3,363
  • 2
  • 10
  • 13

0 Answers0