我正在尝试在Fragments中使用地图,但是我得到“方法getSupportFragmentManager()未定义为下面代码中的Karta类型。 我也尝试使用getFragmentManager而不是getSupportFragmentManager,但后来我得到“无法从Fragment转换为MapFragment”。
Karta.Java:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class Karta extends SupportMapFragment{
public static Karta newInstance() {
Karta f = new Karta();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.karta, container, false);
System.out.println("OnCreateView");
return v;
}
@Override
public void onViewCreated(View v, Bundle savedInstanceState){
super.onViewCreated(v, savedInstanceState);
System.out.println("onViewCreated1");
final LatLng BUTIKPLATS = new LatLng(57.873873, 11.974995);
System.out.println("onViewCreated2");
GoogleMap karta;
karta = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.karta)).getMap();
karta.addMarker(new MarkerOptions().position(BUTIKPLATS).title("Vita Fläckens Blommor"));
karta.setMapType(GoogleMap.MAP_TYPE_HYBRID);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(BUTIKPLATS, 17);
karta.animateCamera(update);
}
}
karta.XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/BGColor"
android:baselineAligned="false"
android:orientation="horizontal" >
<fragment
android:id="@+id/karta"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>
答案 0 :(得分:2)
要真正解决您的问题,请将MapFragment
替换为SupportMapFragment
,以便:
karta = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.karta)).getMap();
然而,你有更大的问题。
您Karta
延长SupportMapFragment
。那样就好。但是,你正在让它膨胀布局,这是不需要的。此外,您正在使用包含MapFragment
而不是SupportMapFragment
的布局,并且MapFragment
在您的代码中不起作用。
我想如果你:
onCreateView()
karta
行然后我认为你会好的。