Android - 如何知道Google Map是否准备就绪?

时间:2014-07-03 07:55:21

标签: android android-fragments google-maps-android-api-2

我已经动态创建了SupportMapFragment,因为我有一些嵌套的片段并使用<fragment>执行该操作会导致我的应用崩溃(FragmentTabHost与{{1}不匹配当你改变标签时。)

现在我想做一个简单的<fragment>电话,但我总是得到getMap()。我已经从nullonCreate调用了它...到目前为止我已经研究过了,这是因为片段仍未创建,因此可能在onCreateView中进行此操作并不确定

之后打赌
onResume

是异步调用。

所以我的问题是:我怎么知道我的地图已准备就绪?是否有可用于此的 getChildFragmentManager().beginTransaction().replace(R.id.map_frame, mMapFragment).commit(); ?这样做的常用方法是什么?我在文档中找不到相关内容。

3 个答案:

答案 0 :(得分:0)

也许您在片段创建完成之前尝试获取地图对象。正如这位先生所说,使用LocationClient可能会对你有所帮助 here

可以调用locationClient.connect();建立连接。连接成功后,将执行onConnected方法。如果失败,则调用onConnectionFailed。

Google's example或此example可以帮助您。

答案 1 :(得分:0)

昨天我遇到了这个问题,并使用了这个方法

https://stackoverflow.com/a/15303445/3309883

答案 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,所以你必须使用构造函数,这对我来说工作得很好,但是一些不使用它的建议。