Из того, что я знаю, когда меняется ориентация экрана, вся деятельность воссоздается снова. У меня есть GoogleMaps v2 и OnMapClickListener, который установлен в методе onCreate, и все работает отлично до тех пор, пока ориентация экрана не изменится. Однако метод onCreate и onResume запускается после смены ориентации, но слушатель как-то теряется ... Что мне не хватает? Я также попытался заставить его и добавил установщика как к методу onCreate, так и onResume .. не очень помогает.OnMapClickListener теряется при изменении ориентации экрана
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FontUtils.setCustomFont(this, (ViewGroup) getWindow().getDecorView());
setUpMapIfNeeded();
}
@Override
protected void onResume()
{
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (mMap == null)
{
mMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
}
if (mMap != null)
{
mMap.getUiSettings().setZoomControlsEnabled(false);
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
mMap.setOnMapClickListener(new OnMapClickListener()
{
@Override
public void onMapClick(LatLng point)
{
if (options == null)
{
options = new MarkerOptions()
.anchor(0.5f, 0.5f)
.position(point)
.title("Marker")
.draggable(true)
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.kruzok));
mMap.addMarker(options);
}
else
{
options.position(point);
mMap.clear();
mMap.addMarker(options);
}
new GetTask().execute(point);
}
});
}
}
Это не совсем правильно. Ориентация - это не единственное, что меняется при повороте устройства. [По API 13] (http://developer.android.com/guide/topics/manifest/activity-element.html#config) также нужно добавить 'screenSize'. –
@ChristopherPerry Да, я отредактировал ответ спасибо !! –
Спасибо большое! Только «ориентация» не помогла, но после добавления «keyboardHidden» и «screenSize» она отлично работает! – vandus