Фрагмент карты внутри действия фрагмента с использованием привязки данных? - PullRequest
0 голосов
/ 15 января 2020

Вот чего я хочу достичь:

Небольшой фрагмент внутри Activity. Этот небольшой фрагмент должен иметь представление карты и некоторые другие макеты внутри него.

Этот небольшой фрагмент поддерживается отдельным классом, расширяющим Fragment. В этом классе фрагментов я использую привязку данных.

Но я получаю следующее исключение при mapFragment.getMapAsyn c (this);

java .lang.NullPointerException: попытка вызвать виртуальный метод void com.google. android .gms.maps.SupportMapFragment.getMapAsyn c (com.google. android .gms. maps.OnMapReadyCallback) 'для пустой ссылки на объект

Ниже приведены XML и Java код, который я использую.

XML

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.github.ybq.android.spinkit.SpinKitView
            android:id="@+id/dieselPriceSpinKit2"
            style="@style/SpinKitView.Large.Wave"
            android:layout_width="match_parent"
            android:layout_height="@dimen/_40ssp"
            android:layout_centerInParent="true"
            app:SpinKit_Color="#FFEB3B"
            android:layout_weight="1"
            android:elevation="5dp"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Order Status"
            android:id="@+id/updateAboutOrders"
            android:layout_centerInParent="true"
            android:padding="@dimen/_20sdp"
            android:textColor="#FFFFFF"
            android:background="@color/colorAccent"
            android:textStyle="bold"
            android:textSize="@dimen/_20ssp"
            android:onClick="onOrderStatusClicked"
            android:visibility="gone"
            android:elevation="10dp"
            />

        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:cardBackgroundColor="@color/colorAccent"
            app:cardCornerRadius="6dp"
            android:id="@+id/smallPreOrderCard"
            android:layout_margin="5dp"
            >

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <fragment
                    android:id="@+id/mapViewSmallFrag"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_alignParentTop="true"
                    android:layout_above="@+id/rl32"
                    android:name="com.google.android.gms.maps.SupportMapFragment"
                    />

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="@dimen/_5sdp"
                    android:id="@+id/rl32"
                    android:layout_alignParentBottom="true"
                    >

                    <ImageView
                        android:id="@+id/delBoyImageHomeActivity"
                        android:layout_width="@dimen/_50sdp"
                        android:layout_height="@dimen/_50sdp"
                        android:layout_alignParentStart="true"
                        android:layout_centerVertical="true"
                        />

                    <com.google.android.material.floatingactionbutton.FloatingActionButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="10dp"
                        android:layout_toEndOf="@+id/delBoyImageHomeActivity"
                        android:src="@drawable/ic_call"
                        app:fabCustomSize="@dimen/_30sdp"
                        android:layout_centerVertical="true"
                        app:backgroundTint="@color/colorPrimary"
                        android:id="@+id/smallPreCardFragFAB"
                        tools:ignore="RelativeOverlap" />

                    <TextView
                        android:id="@+id/preOrderFragTV1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentEnd="true"
                        android:text="Delivery Boy Name"
                        android:textColor="#D1F800"
                        android:textSize="@dimen/_9ssp"
                        />

                    <TextView
                        android:id="@+id/delBoyNameHomeActivity"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/preOrderFragTV1"
                        android:layout_alignParentEnd="true"
                        android:text="Manish Garhwal"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/_12ssp" />

                    <TextView
                        android:id="@+id/preOrderFragTV2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/delBoyNameHomeActivity"
                        android:layout_alignParentEnd="true"
                        android:layout_marginTop="@dimen/_8sdp"
                        android:text="Delivery Boy Number"
                        android:textColor="#D1F800"
                        android:textSize="@dimen/_9ssp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/preOrderFragTV2"
                        android:layout_alignParentEnd="true"
                        android:text="+91 8888888888"
                        android:id="@+id/delBoyNumberHomeActivity"
                        android:textColor="#FFFFFF"
                        android:textSize="@dimen/_12ssp" />

                </RelativeLayout>

            </RelativeLayout>

        </androidx.cardview.widget.CardView>

    </RelativeLayout>

</layout>

JAVA

public class SmallPreOrderFragment extends Fragment implements ContractorForSmallPreordersFrag.view, OnMapReadyCallback {

    private SmallPreOrderFragBinding fragBinding;
    private PresenterForSmallPreOrderFrag smallPrePresenter;

    private double orderLat1 = 0.0;
    private double orderLong1 = 0.0;

    private GoogleMap mMap;

    private View view;
    private MapView mapView;
    private SupportMapFragment mMapFragment;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        fragBinding = DataBindingUtil.inflate(inflater, R.layout.small_pre_order_frag, container, false);
        smallPrePresenter = new PresenterForSmallPreOrderFrag(this, new ModelForSmallPreOrderFrag());
        onActivityStart();
        return fragBinding.getRoot();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        mMapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.mapViewSmallFrag);
        mMapFragment.getMapAsync(this);

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
    }
}

Пожалуйста, не отмечайте дубликаты, если вы не уверены, что это копия. Не просто посмотрите название, пожалуйста. Я уже поцарапал inte rnet и не смог найти решения.

Если найдется дубликат, пожалуйста, прокомментируйте вопрос со ссылкой, я сам удалю этот вопрос.

Спасибо.

...