В моем приложении я использую навигационный ящик с вкладками салфетки (после this), и внутри одной из этих вкладок я хочу использовать карты Google. Я получаю эту ошибку:Google Maps v2 внутри фрагмента return 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()
в главном потоке. Однако почти все решения, с которыми я столкнулся, - это использование устаревших методов. Как я могу инициализировать карту, чтобы избежать нулевого исключения, и только вызывать ее на этой вкладке?
My Tab Фрагмент
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>
[Проверьте эту ссылку SO] (https://stackoverflow.com/a/32004257/2715073) может работать для вас. – Pankaj