我在我的应用程序中使用Google Maps V2,当我将方向更改为横向(或基本上改变方向)时,onMapClick方法不会响应,即使在orientaiton再次更改后也不会响应。我知道我可以通过设置configChange:orientation | screenSize来避免这个奇怪的错误,但是当orientaiton改变时,我的对话框的布局不会将布局从布局 - 肖像更改为布局 - 横向。 这一切都在一项活动中。有没有人遇到过这个问题?地图有什么问题?我不明白问题出在哪里,为什么听众应该取消注册。 我在onCreateMethod中注册它: @覆盖 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_main);
DisplayMetrics dm = getResources().getDisplayMetrics();
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels;
FontUtils.setCustomFont(this, (ViewGroup) getWindow().getDecorView());
RelativeLayout topBar = (RelativeLayout) findViewById(R.id.topBar);
LinearLayout placeTextLayout = (LinearLayout)topBar
.findViewById(R.id.placeTextLayout);
placeTextView = (TextView) placeTextLayout.findViewById(R.id.placeText);
sharedPrefs = getSharedPreferences
(SkyConstants.PREFS_NAME,Context.MODE_PRIVATE);
String place = sharedPrefs.getString
(SkyConstants.PREF_LOCATION_ID,SkyConstants.PREF_LOCATION_DEFAULT);
dateTextView = (TextView) topBar.findViewById(R.id.dateText);
daysTextView = (TextView) topBar.findViewById(R.id.timeText);
updateTopBar();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (mMap == null)
{
mMap = ((SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
}
if (mMap != null)
{
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setZoomGesturesEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
mMap.setOnMapClickListener(new OnMapClickListener()
{
@Override
public void onMapClick(LatLng point)
{
//do something
}
});
}
}
答案 0 :(得分:1)
这是由于创建了方向视图,如果您处于纵向模式,并且您更改为横向,它会再次创建视图,您需要再次设置onClickListener。
如果您以横向模式启动活动,则会出现相同情况。
答案 1 :(得分:0)
在onCreate()方法中将map设置为null有帮助,因为我需要处理系统的方向更改。 所以首先我设置mMap = null 然后我设置了地图。