对于Fragment类型,方法getSupportFragmentManager()未定义

时间:2015-06-07 03:59:48

标签: java android eclipse google-maps android-fragments

我在标题中描述了一个问题,目的是在片段中显示Google的地图。

这是fragment_inicio.xml

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

这是InicioFragment.java

public class InicioFragment extends Fragment implements OnMapClickListener {

private final LatLng UPV = new LatLng(39.481106, -0.340987);
private GoogleMap mapa;

// @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_inicio, container,
            false);

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_inicio);

    mapa = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMap();
    mapa.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
    mapa.moveCamera(CameraUpdateFactory.newLatLngZoom(UPV, 15));
    mapa.setMyLocationEnabled(true);
    mapa.getUiSettings().setZoomControlsEnabled(false);
    mapa.getUiSettings().setCompassEnabled(true);
    mapa.addMarker(new MarkerOptions()
            .position(UPV)
            .title("UPV")
            .snippet("Universidad Politécnica de Valencia")
            .icon(BitmapDescriptorFactory
                    .fromResource(android.R.drawable.ic_menu_compass))
            .anchor(0.5f, 0.5f));
    mapa.setOnMapClickListener(this);
}

private void setContentView(int fragmentInicio) {
    // TODO Auto-generated method stub

}

public void moveCamera(View view) {
    mapa.moveCamera(CameraUpdateFactory.newLatLng(UPV));
}

public void animateCamera(View view) {
    if (mapa.getMyLocation() != null)
        mapa.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
                mapa.getMyLocation().getLatitude(), mapa.getMyLocation()
                        .getLongitude()), 15));
}

public void addMarker(View view) {
    mapa.addMarker(new MarkerOptions().position(new LatLng(mapa
            .getCameraPosition().target.latitude,
            mapa.getCameraPosition().target.longitude)));
}

@Override
public void onMapClick(LatLng puntoPulsado) {
    mapa.addMarker(new MarkerOptions().position(puntoPulsado).icon(
            BitmapDescriptorFactory
                    .defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));

}

}

感谢您对此错误的任何帮助。

感谢

修改

试试你提到我但我仍然约会错误。

错误现在告诉我:

无法从Fragment转换为SupportMapFragment

该项目给了我所以我对appcompat_v7和v4没有太多了解,所以我理解你的评论v4更好吗?

这个项目是一个互联网的例子,只是添加了地图,现在他们说他们想要离开这个位置。

这是最好的方式还是寻找另一种方法来添加定位的谷歌地图。

使用GoogleMap询问Fragment的示例是否太过分了,而不是其他请求。

1 个答案:

答案 0 :(得分:0)

而不是使用getSupportFragmentManager()使用getFragmentManager()

看起来您使用的是android.app.Activity和相关的Fragments,而不是v4支持库提供的支持Activity和Fragments。

如果您需要使用支持片段,请参阅导入支持库片段和活动。如果没有替换片段管理器

如需更多帮助,请参阅Fragment vs Support Fragments