我的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不可分割,我无法通过捆绑发送。
如何在没有默认构造函数的情况下解决此问题?
编辑: 我正在压制警告,似乎工作正常。但正如警告的解释告诉我:每个片段必须有一个空构造函数,因此在恢复其活动状态时可以实现它。
这会在某些时候发生随机崩溃吗?最好的选择仍然是在没有默认构造函数的情况下解决问题。
答案 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();
}