5
我希望能够通过用户按下操作栏按钮在列表片段和地图片段之间切换。目前我可以在它们之间进行交换,但是我试图从片段中获取实际的GoogleMap对象时遇到空指针。当我尝试移动相机时,由于GoogleMap对象为空并跳过该代码,它不会移动。我不确定这是否因为我从来没有真正从xml创建Fragment而只是使用代码这一事实而到期。我的代码如下:在Android地图v2片段和列表片段之间交换
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));
}
}
嗯......所以目前我的主布局只是有一个FrameLayout,我用它来放入不同的列表片段,我想避免把地图片段放在那里,因为我马上就会隐藏它,直到他们点击有些东西,但这是唯一的选择吗? – egfconnor 2013-02-11 03:54:54
没关系,我在onActivityCreated中添加了一个对MapFragment的回调,它表示GoogleMap不为null并且已准备就绪。这似乎是一个安全的地方。 – egfconnor 2013-02-11 04:07:51
是的,添加回调是一个好方法。好的解决方案 – 2013-02-11 04:09:19