0

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

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

在我的 FragmentActivity 中,我像这样启动我的地图片段:

customMapFragment = MapSectionFragment.newInstance();

在我的 FragmentActivity 中,我像这样启动我的 GoogleMap:

mMap = customMapFragment.getMap();

这个参考 - mMap - 是我想要传递给我的列表片段的内容,如下所示:

listSectionFragment = new ListSectionFragment(mMap);

我想要这样做,以便我可以轻松地从 list-fragment 类中操作 map-fragment 上的特定地图。这是我的构造函数:

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

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

而且由于 GoogleMap 不可打包,我无法通过捆绑发送它。

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


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

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

4

1 回答 1

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();
}
于 2013-03-13T14:47:47.990 回答