SupportmapFragment показывает черный экран - PullRequest
0 голосов
/ 29 октября 2018

Я реализовал SupportMapFragment в двух фрагментах, используя одинаковые коды и процесс реализации. Один фрагмент загружается в виде прокрутки. Внезапно этот фрагмент показывает черный экран на нем. Только слово "Google" показывает. Но другой фрагмент работает хорошо. Я добавил ключ api в метаданные манифеста, а также добавил значения google_maps_api.xml. Все еще с черным экраном. Пожалуйста, помогите.

XML-код:

 <LinearLayout
                    android:id="@+id/google_map_container"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:orientation="vertical"
                    android:gravity="center"
                    android:visibility="gone">


                    <fragment
                        android:id="@+id/map"
                        class="util.WorkaroundMapFragment"
                        android:layout_width="@dimen/localization_map_width"
                        android:layout_height="@dimen/localization_map_height">

                    </fragment>

                </LinearLayout>

Java-код

GoogleMap mMap;
WorkaroundMapFragment mapFragment;

Фрагмент карты обхода:

public class WorkaroundMapFragment extends SupportMapFragment {

private OnTouchListener mListener;

@Override
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {

    View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);

    TouchableWrapper frameLayout = new TouchableWrapper(getActivity());

    frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));

    ((ViewGroup) layout).addView(frameLayout,
            new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    return layout;
}

public void setListener(OnTouchListener listener) {
    mListener = listener;
}

public interface OnTouchListener {
    public abstract void onTouch();
}

public class TouchableWrapper extends FrameLayout {

    public TouchableWrapper(Context context) {
        super(context);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mListener.onTouch();
                break;
            case MotionEvent.ACTION_UP:
                mListener.onTouch();
                break;
        }
        return super.dispatchTouchEvent(event);
    }
}
}

карта инициализации

 if (mapFragment == null) {
                    mapFragment = (WorkaroundMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
                }

                mapFragment.setListener(() -> scrollView.requestDisallowInterceptTouchEvent(true));


                if (mMap == null) {
                    mapFragment.getMapAsync(this);
                } else {
                    settingMapOnLatLng();
                }

Инициализация карты

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