#android
#Android
Вопрос:
я создал действие карты. и я вызываю активность карты при нажатии кнопки. но он показывает ошибку. вот мой код: `map_icon.setOnClickListener(новый OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(DepartmentUpdate_Detail.this,
MapActivity.class);
i.putExtra("lat", lat);
i.putExtra("lng", lng);
startActivity(i);
}
});`
`
// и моя активность на карте приведена ниже:
открытый класс MapActivity расширяет активность, реализует OnInfoWindowClickListener {
private GoogleMap map;
private int zoomLevel = 7;
String latitude,longitude,address,city,country;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_activity);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
latitude = extras.getString("lat");
longitude = extras.getString("lng");
}
LatLng defaultLatLng = new LatLng(Double.valueOf(latitude), Double.valueOf(longitude));
//Log.e("Latitude:Longitude",":" Double.valueOf(latitude) ":" Double.valueOf(longitude));
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
try {
addresses = geocoder.getFromLocation(Double.valueOf(latitude), Double.valueOf(longitude), 1);
address = addresses.get(0).getAddressLine(0);
city = addresses.get(0).getAddressLine(1);
country = addresses.get(0).getAddressLine(2);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
if (map!=null){
map.getUiSettings().setCompassEnabled(true);
map.setTrafficEnabled(true);
map.setMyLocationEnabled(true);
// Move the camera instantly to defaultLatLng.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(defaultLatLng, zoomLevel));
map.addMarker(new MarkerOptions().position(defaultLatLng)
.title("Location:")
.snippet(address ", " city ", " country)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
map.setOnInfoWindowClickListener(this);
}
}
catch (NullPointerException e)
{
e.printStackTrace();
}
}
@Override
public void onPause() {
if (map != null){
map.setMyLocationEnabled(false);
map.setTrafficEnabled(false);
}
super.onPause();
}
@Override
public void onInfoWindowClick(Marker marker) {
}
}
`
Ответ №1:
@Aks, где вы объявили OnClickListener? Это должно быть объявлено в методе onCreate(), чтобы, как только действие будет увеличено, ClickListener был доступен для прослушивания.
Ответ №2:
Просто поместите свои данные в Uri.parse и этот код внутри метода onClick
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga Zoo, Sydney Australiaamp;mode=b");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);