打包APK报错:Error:Error: This fragment should provide a default constructor (a public constructor with no arguments) (com.cervin.morgan.seachart.fragment.RightFragment) [ValidFragment]
琢磨了好久。也看了官方给出的关于fragment的解释以及写法。包括网上很多朋友都建议用官方API的写法。
但是我想说的是,如果你的参数是string int char 等类型,没问题,但是如果不是呢?如果是个view呢?怎么办?
如下:我列出问题的解决方法:
初始状态,我传入的参数是一个mapview类型,显然用bundle是不行的,报出需要一个无参的构造方法。没关系,加上,
public RightFragment(MapView mMapView) {
mapView = mMapView;
baseMapLayer = mapView.getBaseMapLayer();
}
加了一个无参的构造函数后,继续打包,又报出需要setArguments方法,但是要用set,明显我的参数类型是不可以的
public RightFragment(MapView mMapView) {
mapView = mMapView;
baseMapLayer = mapView.getBaseMapLayer();
}
public RightFragment(){}
我的解决方法是在类前面加一句
@SuppressLint("ValidFragment")
同时把无参的构造删掉,重新打包,哈哈,没问题了!
@SuppressLint("ValidFragment")
public class RightFragment extends BaseFragment implements OnClickListener {
private WidgetLayer widgetLayer;
private BaseMapLayer baseMapLayer;
private MapView mapView;
private Button mPlainButtn;
private Button mSymbolizedButton;
private List<Item> mlist = new ArrayList<Item>();
private List<Item> mmlist = new ArrayList<Item>();
private List<Item> mDisplayFloate = new ArrayList<Item>();