ユーザーがアクションバーボタンを押すことで、リストフラグメントとマップフラグメントを切り替えられるようにしたい。現在、それらをうまく交換できますが、フラグメントから実際のGoogleMapオブジェクトを取得しようとすると、nullポインターが発生します。カメラを動かそうとすると、GoogleMapオブジェクトがnullであり、そのコードをスキップしているため、カメラは動きません。これが、実際にxmlからフラグメントを作成することはなく、コードのみを使用しているという事実が原因であるかどうかはわかりません。私のコードは次のとおりです。
public class MapFragment extends SherlockMapFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = super.onCreateView(inflater, container, savedInstanceState);
return root;
}
}
@Override
public void swapFragments() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
if (listFragment.isVisible()) {
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
transaction.replace(R.id.root, mapFragment);
} else {
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
transaction.replace(R.id.root, listFragment);
}
transaction.commit();
}
@Override
public void setupMapFragment() {
mapFragment = new MapFragment();
mMap = mapFragment.getMap();
if (mMap != null) {
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(BuzzbabaApplication.latitude,
BuzzbabaApplication.longitude), 14));
}
}