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.
I did the coding of getting the location update in LocationManager class.
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];
}
}