0

У меня есть Основное действие, которое я не могу продлить до действия фрагмента. Вначале я показывал свою карту google прямо, и все работало нормально. Но тогда я должен использовать фрагменты, поэтому я превратил все другие действия (кроме MainActivity) в фрагменты и смог их назвать и заменить. Но возникает проблема. Когда мне нужно было поместить мою карту google в отдельный фрагмент и вызвать ее при запуске моей основной активности .. она загружает карту, но выглядит, как будто она не создает экземпляр карты правильноКак добавить MapFragment v2 внутри фрагмента и вызвать его в MainActivity

Мой xml для MyMapFragment, который содержит карту, как это:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.abdulsalamali.letscoffee.MyMapFragment"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

     android:id="@+id/map_container" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 


     <fragment 
      android:id="@+id/mapView" 
      android:name="com.google.android.gms.maps.MapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/rl_address" /> 


    </RelativeLayout> 

</FrameLayout> 

и деятельности созданной этой карте я пытаюсь инициализировать карту, как этот

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     createMapView(); 
     // and doing some stuff here such as camera animation 
} 

private void createMapView() { 
     /** 
     * Catch the null pointer exception that 
     * may be thrown when initialising the map 
     */ 
     try { 
      if (null == googleMap) { 
       MapFragment mapFragment = new MapFragment(); 
       FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
       // transaction.add(R.id.rl_map_container, mapFragment).commit(); 
       googleMap= mapFragment.getMap(); 
       googleMap = ((SupportMapFragment) getChildFragmentManager() 
         .findFragmentById(R.id.mapView)).getMap(); 
       googleMap.setBuildingsEnabled(true); 
       googleMap.setMyLocationEnabled(true); 

       /** 
       * If the map is still null after attempted initialisation, 
       * show an error to the user 
       */ 
       if (null == googleMap) { 
        Toast.makeText(getActivity(), 
          "Error creating map", Toast.LENGTH_SHORT).show(); 

       } 


      } 
     } catch (NullPointerException exception) { 
      Log.e("mapApp", exception.toString()); 
     } 
    } 

Так что не анимировать он просто показывает карту, не задавая текущее местоположение, кнопка не позволяет для myLocationEnabled. Фактически он возвращает экземпляр googleMap как null.

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

+0

http://stackoverflow.com/questions/18206615/how-to-use-google-map-v2-inside-fragment - i thnk это решит вашу проблему – koutuk

+0

@koutuk в принятом ответе есть много вещей которые я не могу понять, можете ли вы попытаться разработать их на мне? –

+0

какой часть непонятный .... – koutuk

ответ

1

Я отправляю это как ответ, поскольку сам это выяснил, но с разными ссылками, которые не были связаны с моим делом, и использовали разные методы: У меня ошибка только в моем xml, и я использовал фрагмент тега внутри моего xml фрагмента, который должен добавить в него фрагмент карты.

так что теперь я изменил его следующим образом.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.abdulsalamali.letscoffee.MyMapFragment"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

     android:id="@+id/map_container" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 


     <FrameLayout 
      android:name="com.google.android.gms.maps.MapFragment" 
      xmlns:map="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/mapView" 

      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/rl_address" /> 


    </RelativeLayout> 

</FrameLayout> 

Таким образом, он начал работать даже на задней кнопке, нет аварийной ситуации с приложением. Я отправляю его так, чтобы, если кто-то попадает в это состояние, этот пост.

 Смежные вопросы

  • Нет связанных вопросов^_^