2016-11-29 4 views
0

Я получаю следующую ошибку, когда пытаюсь оставить фрагмент, содержащий карту (на кнопке на задней панели).Google maps error inflating, Android

ОШИБКА: mapInflater-> Binary XML файл строка # 7: Ошибка фрагмент класса накачивания

Беллоу метод OnCreate() фрагмента где карта помещается. А также есть xml-код макета.

@Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     apiRequestManager = ApiRequestManager.getInstance(); 
     fragmentHandler = FragmentHandlerActivityMain.getInstance(getActivity()); 
     session = new SessionManager(App.getInstance().getApplicationContext()); 

     ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(getString(R.string.maps_fragment_toolbar_name)); 

     Handler mainHandler = new Handler(); 
     Runnable myRunnable = new Runnable() { 

      @Override 
      public void run() { 
       try { 
        SupportMapFragment maps = (SupportMapFragment) getChildFragmentManager() 
          .findFragmentById(R.id.mapView); 
        if (maps != null) 
         maps.getMapAsync(MapsFragment.this); 
       } catch (Exception ex) { 
        LogUtil.getInstance().add(LogUtil.ERROR, 
          TAG, "onCreateMaps", ex); 
       } 
      } 
     }; 
     mainHandler.post(myRunnable); 
    } 

Журнал указывает этот макет на фрагмент (строка 7).

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app1="http://schemas.android.com/apk/res-auto" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context=".salesman.fragments.MapsFragment"> 

    <fragment 
     android:id="@+id/mapView" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true"/> 
</FrameLayout> 
+0

после аварии полные журналы –

+0

@Vivek Mishra нет аварии, только то, что одна линия -> manager.fragments.ManagerMapFragment: mapInflater-> Двоичная строка XML-файла # 7: Ошибка раздувания фрагмента класса –

ответ

0

Вы пытаетесь getChildFragmentManager() instade из getSupportFragmentManager().

нужно изменить в Java Файл:

1). Вам необходимо реализовать OnMapReadyCallback в вашем фрагменте.

2). Получите SupportMapFragment из представления.

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
     .findFragmentById(R.id.map); 
mapFragment.getMapAsync(this); 

3). Метод Overrid onMapReady (GoogleMap googlMap).

@Override 
public void onMapReady(GoogleMap googleMap) { 
     // Add a marker in Sydney, Australia, 
     LatLng sydney = new LatLng(-33.852, 151.211); 
     googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    // and move the map's camera to the same location. 
     googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 

В XML-файле: -

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app1="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".salesman.fragments.MapsFragment">

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
</FrameLayout> 

Пожалуйста, проверьте обновленный ответ согласно ниже комментарий:

Теперь попробуйте установить MapView InstEd фрагмента потому что если вы используете фрагмент внутри фрагмента, он создает много подает в суд.

Необходимо изменить в JAVA-коде: // Инициализировать GoogleMap myMap; MapView mMapView;

// Метод OnCreateView MapsInitializer.initialize (this.getActivity()); mMapView = (MapView) rootView.findViewById (R.id.map); mMapView.onCreate (savedInstanceState); mMapView.getMapAsync (это);

@Override public void onPause() {super.onPause(); mMapView.onPause(); }

@Override public void onPause() {super.onPause(); mMapView.onPause(); }

@Overridepublic void onResume() {super.onResume(); mMapView.onResume(); }

нужно изменить в XML-файле:

<com.google.android.gms.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" />

+0

Привет, у меня уже есть onMapReady (GoogleMap googleMap) переопределено, также пытаюсь использовать getSupportFragmnetManager(), но я получаю сообщение об ошибке «не могу разрешить метод» –

+0

Привет, я ответил в комментарии, разместив обновленный ответ в разделе ** «Пожалуйста, проверьте обновленный ответ в соответствии с нижеприведенным комментарием» **. Пожалуйста, проверьте ответ и дайте мне знать, это сработало для вас. –