1

アプリで Google マップ V2 を使用していますが、向きを横向きに変更 (または基本的に向きを変更) すると、onMapClick メソッドが応答せず、向きが再度変更されても応答しません。configChange:orientation|screenSize を設定することでこの奇妙なバグを回避できることはわかっていますが、ダイアログのレイアウトは、向きが変更されたときにレイアウトをレイアウト ポートレートからレイアウト ランドスケープに変更しません。これはすべて 1 つのアクティビティにあります。誰かがこの問題に遭遇しましたか? マップの何が問題になっていますか? どこに問題があるのか​​、なぜリスナーを登録解除する必要があるのか​​ わかりません。onCreateMethod に登録します。 @Override 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  

            }

        });
    }
}
4

2 に答える 2

1

これは、向きのビューの作成によるものです。ポートレート モードで横向きに変更すると、ビューが再度作成され、onClickListener を再度設定する必要があります。

アクティビティを横向きモードから縦向きモードで開始した場合も同じことが起こります。

于 2013-03-21T16:36:43.277 に答える
0

システムによる向きの変更を処理する必要があったため、 onCreate() メソッドでマップを null に設定すると役立ちました。最初に mMap=null を設定してから、マップをセットアップします。

于 2013-03-30T11:02:23.963 に答える