我正在尝试将MapFragment添加到当前的Fragment中。嵌套片段的使用仅限于FragmentTransactions,您不能在布局中使用xml标记。另外,我希望在用户按下按钮时将其添加到主片段中。因此,getInstance()当用户按下该按钮并将其添加到正确的位置时,我将以编程方式创建MapFragment 。正确显示,到目前为止效果很好。
问题在于,在附加MapFragment之后,我需要获取GoogleMap 放置Marker的引用,但是该getMap()方法返回null(因为onCreateView()尚未调用该片段)。
我看了看演示示例代码,我发现他们使用的初始化MapFragment的解决方案onCreate(),并获得在参考GoogleMap的onResume(),之后onCreateView()被调用。
我需要在MapFragment初始化之后立即获取对GoogleMap的引用,因为我希望用户能够使用按钮显示或隐藏地图。我知道一个可能的解决方案是如上所述在地图的开头创建Map,然后设置其可见性消失,但是我希望该地图默认情况下处于关闭状态,因此如果用户未明确要求,则不会占用用户的带宽为了它。
我尝试使用MapsInitializer,但也不起作用。我有点卡住。有任何想法吗?到目前为止,这是我的测试代码:
public class ParadaInfoFragment extends BaseDBFragment {
// BaseDBFragment is just a SherlockFragment with custom utility methods.
private static final String MAP_FRAGMENT_TAG = "map";
private GoogleMap mMap;
private SupportMapFragment mMapFragment;
private TextView mToggleMapa;
private boolean isMapVisible = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_parada_info, container, false);
mToggleMapa = (TextView) v.findViewById(R.id.parada_info_map_button);
return v;
}
@Override
public void onStart() {
super.onStart();
mToggleMapa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isMapVisible) {
openMap();
} else {
closeMap();
}
isMapVisible = !isMapVisible;
}
});
}
开心每一天1111
相关分类