Карта Google отображается на фрагменте поверх активности

#android #google-maps

#Android #google-карты

Вопрос:

Мое приложение корректно отображает карту Google для действия, но когда я открываю фрагмент поверх действия, карта также отображается и на нем.

Вот как я открываю фрагмент

 public void ivItemsOnClick(View view) {
    FragmentManager fm = getSupportFragmentManager();
    ItemsFragment itemsFragment = new ItemsFragment();
    Bundle bundle = new Bundle();
    bundle.putString(ORDER_ID, firebaseOrders.get(pageIndicatorView.getCurrentPage()).getId());
    itemsFragment.setArguments(bundle);
    fm.beginTransaction()
            .replace(R.id.delivery_frame, itemsFragment)
            .addToBackStack(ItemsFragment.class.getSimpleName())
            .commit();
}
  

И вот моя настройка карты

 //onCreate
    mapFragment = new MapFragment();
    getFragmentManager().beginTransaction().add(R.id.map_fragment, mapFragment).commit();
    mapFragment.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            map = googleMap;

            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            map.getUiSettings().setAllGesturesEnabled(false);
            map.getUiSettings().setTiltGesturesEnabled(false);
            map.getUiSettings().setZoomControlsEnabled(false);
            map.getUiSettings().setCompassEnabled(false);
            map.getUiSettings().setMyLocationButtonEnabled(false);

            //Initialize Google Play Services
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(getApplicationContext(),
                        Manifest.permission.ACCESS_FINE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED) {
                    buildGoogleApiClient();
                    map.setMyLocationEnabled(true);
                }
            } else {
                buildGoogleApiClient();
                map.setMyLocationEnabled(true);
                Toast.makeText(getApplicationContext(), "permission denied", Toast.LENGTH_SHORT).show();
            }
        }
    });
  

Вот xml для карты, которая находится внутри макета ограничений

     <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@ id/map_fragment"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </android.support.constraint.ConstraintLayout>
  

Комментарии:

1. Я сталкиваюсь с той же проблемой. Вы получили какое-либо решение?

Ответ №1:

Я вручную выполнил

mapFragment.getView().setVisibility(View.INVISIBLE) и mapFragment.getView().setVisibility(View.VISIBLE) внутри onBackPressed() в родительском классе activity.