【问题标题】:OnMapClickListener is lost when screen orientation changes屏幕方向更改时 OnMapClickListener 丢失
【发布时间】:2013-03-10 10:46:57
【问题描述】:

据我所知,当屏幕方向发生变化时,会重新创建整个活动。我有 GoogleMaps v2 和 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 google-maps google-maps-android-api-2


    【解决方案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"/>    
    

    【讨论】:

    • 这不太正确。旋转设备时,方向并不是唯一改变的东西。 As of API 13screenSize也需要加。
    • 非常感谢!只有“orientation”没有帮助,但在添加“keyboardHidden”和“screenSize”后它就完美了!
    • 嘿,如果我想在屏幕方向发生变化时处理 dialogFragments 布局的变化怎么办?它以某种方式无法进行..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多