Android 用の GoogleMaps v2 API アプリを開発していますが、問題が発生しました。次の図のように、ActionBar を (下位互換性のために actionbarsherlock 経由で) 使用したいと思います。
(出典: google.com )
私のコードを ActionBar を持つように変更しなくても、私のマップ アプリは素晴らしく機能します。それを使用するようにコードを適合させようとすると、空白の画面とアクションバーが表示されます。したがって、マップ自体またはその他のものが読み込まれます。
前のコード: (関連部分のみ)
public class MapActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initiate loader, so that files can be acquired in background thread.
new Loader().execute();
}
.
.
.
}
インポートや変数は含めていません。コードはコンパイルされるので、心配する必要はありません。
後のコード:
public class MapActivity extends SherlockFragmentActivity {
public boolean onCreate(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,SEARCH,0,"Search")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
// Initiate loader, so that files can be acquired in background thread.
new Loader().execute();
return true;
}
public boolean onOptionsItemSelected (MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case SEARCH:
openSearchView();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
.
.
.
}
編集 -
マップ設定コード: (map
クラス変数として宣言されていることに注意してください)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Recovers map choice from previous activity.
Intent intent = getIntent();
map_descriptor = intent.getStringExtra(MAP);
MAP_CENTER = map2LatLng(map_descriptor);
map = setupMap(map);
// Initiate loader, so that files can be acquired in background thread.
new Loader().execute();
}
public GoogleMap setupMap(GoogleMap map) {
if (map == null) {
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
// Just in case null map was accidently passed to setupMap.
}
map.setMapType(3); // TERRAIN
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(MAP_CENTER)
.zoom(ZOOM_LEVEL)
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
map.setOnCameraChangeListener(new OnCameraChangeListener() {
public void onCameraChange(CameraPosition cameraPosition) {
ZOOM_LEVEL = cameraPosition.zoom;
recenterMap(ZOOM_LEVEL);
}
});
return map;
}
XML レイアウト コード:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>