我想要構建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是首選,上面的代碼有什麼問題?