我想要构建Fragment
,其中包含与其他视图重叠的全屏地图(A ViewPager
,EditText
等)。我想到了两种不同的选择:使用全屏地图创建自定义片段
- 创建一个
MapView
布局的根附近的Fragment
并将其设置为match_parent
,然后用其他View
的正常进行。 - 子类
MapFragment
。
我子类MapFragment
:
public class ListMapFragment extends MapFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
}
显示这个片段可以作为正常的地图占据整个片段。但是,我想在地图上显示上述各种视图。如果我试图膨胀,通过不是返回视图返回一个视图(就像使用普通Fragment
),一个NPE发生:显示java.lang.NullPointerException:试图调用接口
public class ListMapFragment extends MapFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list_map, container, false);
return view;
}
}
所致方法“无效maps.ad.yv()”上的空对象引用
如果我尝试调用返回一个视图之前超类方法,布局被加载,但地图不是:
public class ListMapFragment extends MapFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list_map, container, false);
super.onCreateView(inflater, container, savedInstanceState);
return view;
}
在两种选择中,哪一种比另一种更受欢迎?如果#2是首选,上面的代码有什么问题?