そのため、Google マップを表示しようとしている Fragment クラスに次のコードがあります。場所が正常に検出され、ズームされても、他のすべての UI コンポーネント (場所ボタンなど) が表示されず、マップが何らかの形でジェスチャに反応しません。何が問題ですか?
インフレートする前に setupMap() を呼び出そうとすると、明らかにマップの準備ができておらず、getMap で null ポインターを取得します。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mMapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.map, mMapFragment);
fragmentTransaction.commit();
View v = inflater.inflate(R.layout.afragment, container, false);
setupMap();
// Inflate the layout for this fragment
return v;
}
そして、次のようにマップをセットアップしました。
private void setupMap(){
if (mMap == null) {
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
//Set Location etc
........
mMap.getUiSettings().setAllGesturesEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setZoomGesturesEnabled(true);
// Zoom in the Google Map
mMap.animateCamera(CameraUpdateFactory.zoomTo(14));
mMap.setOnMapClickListener(this);
}
}
}