2015-03-12 3 views
0

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

map_fragment.xml:

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

MapFragment:

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 



public class MapFragment extends Fragment{ 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View view = inflater.inflate(R.layout.map_fragment, container, false); 

     GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    return view; 


    } 


} 

Линия:

GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

всегда показывает:

Не может отлит из фрагмента SupportMapFragment

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

+1

задавали много раз ... вы должны решить, «поддержка» или «нормально» ... не использовать оба одновременно ... – Selvin

+0

@Selvin либо комбинации не работает в моем случае – kittu88

+0

omg, не работает? что это значит? в словаре программиста нет такого слова .... в любом случае проверьте импорт ... узнайте, что такое иерархия классов ... Я уверен, что SupportMapFragment не получен из android.app.Fragment ... но MapFragment есть. .. – Selvin

ответ

1

Это лучшая практика использования карты Google, попробуйте ее.

public class MapFragment extends Fragment implements OnMapReadyCallback{ 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View view = inflater.inflate(R.layout.map_fragment, container, false); 

    // GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    MapFragment map = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 

    map.getMapAsync(this); 
return view; 


} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    //googleMap is your map 

    googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 

    gm = googleMap; 

    googleMap.setOnMarkerClickListener(this); 

    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Ancona, 5)); 
} 

} 
+0

Ошибка при объявлении OnMapReadyCallback не может быть разрешена к типу – kittu88

+0

введите этот импорт: import com.google.android.gms.maps.OnMapReadyCallback; –

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