在我的應用程序中,我使用的導航抽屜與刷卡選項卡(以下this),並在這些選項卡之一我想要使用谷歌地圖。我得到這個錯誤:谷歌地圖v2裏面的片段返回void
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference
我已經搜查,發現我只能在主線程中調用getMapAsync()
。然而,我面臨的幾乎所有解決方案都是使用不推薦的方法。我如何初始化地圖,以避免null異常,並只在該選項卡上調用它?
我的標籤片段
public class PrimaryFragment extends Fragment implements OnMapReadyCallback {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.primary_layout,container,false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SupportMapFragment supportMapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map));
supportMapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
//toDO
}
}
的標籤片段XML
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
</FrameLayout>
[Check this SO link](https://stackoverflow.com/a/32004257/2715073)可能適合你。 – Pankaj