Android Google Maps v2-onclick listener在方向更改后不响应

Android Google Maps v2-onclick listener在方向更改后不响应,android,android-maps-v2,Android,Android Maps V2,我在应用程序中使用Google Maps V2,当我将方向更改为横向(或基本上更改了方向)时,onMapClick方法不会响应,即使方向再次更改,也不会响应。我知道我可以通过设置configChange:orientation | screenSize来避免这个奇怪的错误,但是当orientation发生变化时,我的对话的布局不会从布局纵向更改为布局横向。 这一切都集中在一项活动中。有人遇到过这个问题吗?地图怎么了?我不明白问题出在哪里,为什么监听器应该注销。 我在onCreateMethod中

我在应用程序中使用Google Maps V2,当我将方向更改为横向(或基本上更改了方向)时,onMapClick方法不会响应,即使方向再次更改,也不会响应。我知道我可以通过设置configChange:orientation | screenSize来避免这个奇怪的错误,但是当orientation发生变化时,我的对话的布局不会从布局纵向更改为布局横向。 这一切都集中在一项活动中。有人遇到过这个问题吗?地图怎么了?我不明白问题出在哪里,为什么监听器应该注销。 我在onCreateMethod中注册它: @凌驾 创建时受保护的void(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main)


这是由于为方向创建了视图,如果您处于纵向模式,并且更改为横向,则会再次创建视图,并且需要再次设置onClickListener


如果在横向模式下启动“纵向”活动,也会发生同样的情况。

这是由于为方向创建了视图,如果在纵向模式下更改为横向,则会再次创建视图,并且需要再次设置onClickListener


如果在横向模式下启动活动,也会发生同样的情况,即纵向。

在onCreate()方法中将map设置为null有助于我处理系统的方向更改。 所以首先我设置mMap=null
然后我设置地图。

在onCreate()方法中将地图设置为null有助于我处理系统的方向更改。 所以首先我设置mMap=null
然后我设置了地图。

我在onCreate方法中设置了onMap click监听器,我可以清楚地看到,每次我更改方向时,都会调用设置监听器的方法。但是监听器不知何故消失了。我单击并单击,什么也没有发生。如果我将方向更改回纵向,监听器仍然丢失……我设置了onMap单击onCreate方法中的listener,我可以清楚地看到每次我更改方向时都会调用设置侦听器的方法。但侦听器不知何故消失了。我单击并单击,什么都没有发生。如果我将方向更改回纵向,则侦听器仍然丢失。。。
    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  

            }

        });
    }
}