将GoogleMap作为参数传递给片段

时间:2013-02-27 11:28:52

标签: android google-maps

我的Android应用程序使用Google Maps API V2时出现问题。

我有一个带有两个片段的FragmentActivity。一个带有列表的片段和一个带有GoogleMap对象的片段。我想要实现的是从列表中操纵地图。

在我的FragmentActivity中,我发起了这样的地图片段:

customMapFragment = MapSectionFragment.newInstance();

在我的FragmentActivity中,我启动了我的GoogleMap:

mMap = customMapFragment.getMap();

这个引用 - mMap - 是我想要传递给我的list-fragment的内容,如下所示:

listSectionFragment = new ListSectionFragment(mMap);

我希望这样做,我可以轻松地操作list-fragment类中map-fragment上的特定映射。这是我的构造函数:

    public ListSectionFragment(GoogleMap mMap) {
    this.mMap = mMap;
}

然而,这给了我错误/警告“避免片段中的非默认构造函数:使用默认构造函数加上Fragment #setArguments(Bundle)而不是”

由于GoogleMap不可分割,我无法通过捆绑发送。

如何在没有默认构造函数的情况下解决此问题?


编辑: 我正在压制警告,似乎工作正常。但正如警告的解释告诉我:每个片段必须有一个空构造函数,因此在恢复其活动状态时可以实现它。

这会在某些时候发生随机崩溃吗?最好的选择仍然是在没有默认构造函数的情况下解决问题。

1 个答案:

答案 0 :(得分:1)

解决方案:

使用onAttached而不是默认构造函数。

像这样:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if(!(activity instanceof MainFragmentActivity))
        throw new ClassCastException(activity.toString()
                + " must be of type MainFragmentActivity");
    parent = (MainFragmentActivity) activity;
    this.mMap = parent.getMap();
}