0

私が知っていることから、画面の向きが変わると、アクティビティ全体が再作成されます。私は GoogleMaps v2 と OnMapClickListener を持っています。これは onCreate メソッドで設定されており、画面の向きが変わるまですべてが完全に機能します。ただし、onCreate と onResume メソッドは向きの変更後に実行されますが、リスナーはどういうわけか失われます...何が欠けていますか? 私もそれを強制しようとし、セッターを 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);
}
});
}
}
4

1 に答える 1

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"/>    
于 2013-03-10T10:48:14.373 に答える