2013-03-10 5 views
0

Из того, что я знаю, когда меняется ориентация экрана, вся деятельность воссоздается снова. У меня есть 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); 
} 
}); 
} 
} 

ответ

1

Использование android:configChanges="orientation". Он не будет воссоздавать активность при изменении ориентации экрана.

<activity android:name=".HomeMapView" android:label="@string/title_home" android:configChanges="keyboardHidden|orientation" /> 

для Android 3.2 (уровень API 13) и новее:

<activity android:name=".HomeMapView" android:label="@string/title_home" android:configChanges="keyboardHidden|orientation|screenSize"/>  
+0

Это не совсем правильно. Ориентация - это не единственное, что меняется при повороте устройства. [По API 13] (http://developer.android.com/guide/topics/manifest/activity-element.html#config) также нужно добавить 'screenSize'. –

+0

@ChristopherPerry Да, я отредактировал ответ спасибо !! –

+0

Спасибо большое! Только «ориентация» не помогла, но после добавления «keyboardHidden» и «screenSize» она отлично работает! – vandus

Смежные вопросы