1
我想獲得一個地圖工作在片段,但我得到「方法getSupportFragmentManager()未定義的類型Karta 。在 下面的代碼,我也嘗試過使用getFragmentManager代替getSupportFragmentManager,但後來我得到 「無法從片段轉換爲MapFragment」方法getSupportFragmentManager()是未定義的類型片段(support.v4.app.Fragment)
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>
嗯我可能做錯了,但: 我用SupportMapFragment替換MapFragment,就像你說的那樣,並擺脫了錯誤。但是,如果我刪除了onCreateView,則會在「GoogleMap karta」中出錯;和那一行下面的行。 - 請參閱http://pastebin.com/gmFdJgvu中的評論。 如果我刪除佈局,它在哪裏定義了地圖的顯示位置? – Sluggo
@Sluggo:你的語法錯誤是因爲你刪除了你的'onViewCreated()'方法的開始行。無論您在何處顯示此「Karta」片段,都會顯示地圖。 – CommonsWare
..所以我應該保持onViewCreated()?如果我這樣做,我會崩潰:「01-16 21:15:36.797:E/AndroidRuntime(1161):java.lang.ClassCastException:nu.sluggo.testapp.foretagsinfo.DetaljFragment無法轉換爲com.google。 android.gms.maps.SupportMapFragment「(DetaljFragment是應該用該mapfragment替換的片段) – Sluggo