Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 屏幕方向更改时,OnMapClickListener将丢失_Android_Google Maps_Google Maps Android Api 2 - Fatal编程技术网

Android 屏幕方向更改时,OnMapClickListener将丢失

Android 屏幕方向更改时,OnMapClickListener将丢失,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,据我所知,当屏幕方向发生变化时,整个活动将重新创建。我有GoogleMapsV2和一个OnMapClickListener,它是在onCreate方法中设置的,在屏幕方向改变之前,一切都可以完美地工作。然而,onCreate和onResume方法在方向改变后运行,但是监听器不知何故丢失了……我缺少了什么?我还试图强制它,并将setter添加到onCreate和onResume方法中..实际上没有帮助 @Override protected void onCreate(Bundle savedIn

据我所知,当屏幕方向发生变化时,整个活动将重新创建。我有GoogleMapsV2和一个OnMapClickListener,它是在onCreate方法中设置的,在屏幕方向改变之前,一切都可以完美地工作。然而,onCreate和onResume方法在方向改变后运行,但是监听器不知何故丢失了……我缺少了什么?我还试图强制它,并将setter添加到onCreate和onResume方法中..实际上没有帮助

@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);
}
});
}
}

使用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"/>    


这不太正确。旋转设备时,方向并不是唯一改变的<代码>屏幕大小也需要添加。非常感谢!只有“方向”没有帮助,但在添加“键盘隐藏”和“屏幕大小”后,它工作得非常完美!嘿,如果我想在屏幕方向改变时处理dialogFragments布局的变化呢?不知何故,这件事并不顺利。。