我已经动态创建了SupportMapFragment
,因为我有一些嵌套的片段并使用<fragment>
执行该操作会导致我的应用崩溃(FragmentTabHost
与{{1}不匹配当你改变标签时。)
现在我想做一个简单的<fragment>
电话,但我总是得到getMap()
。我已经从null
和onCreate
调用了它...到目前为止我已经研究过了,这是因为片段仍未创建,因此可能在onCreateView
中进行此操作并不确定
onResume
是异步调用。
所以我的问题是:我怎么知道我的地图已准备就绪?是否有可用于此的 getChildFragmentManager().beginTransaction().replace(R.id.map_frame, mMapFragment).commit();
?这样做的常用方法是什么?我在文档中找不到相关内容。
答案 0 :(得分:0)
也许您在片段创建完成之前尝试获取地图对象。正如这位先生所说,使用LocationClient可能会对你有所帮助 here。
可以调用locationClient.connect();
建立连接。连接成功后,将执行onConnected方法。如果失败,则调用onConnectionFailed。
Google's example或此example可以帮助您。
答案 1 :(得分:0)
昨天我遇到了这个问题,并使用了这个方法
答案 2 :(得分:0)
在查看其他答案后,我自己做了一个更简单的选择:
mMapFragment = new SupportMapFragment() {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
setupMapIfNeeded();
return view;
}
};
这样,我匿名扩展SupportMapFragment
,我不需要创建新的类或接口或监听器。虽然如果你需要重用一些东西并且可以从更复杂的用例中受益,我建议你在一个新的类中扩展它并设置一些listnet,但是对于我的purpouse来说这不仅是必要的。
建议:以这种方式使用它你不能使用newInstance()
的工厂方法SupportMapFragmet
,所以你必须使用构造函数,这对我来说工作得很好,但是一些不使用它的建议。