2014-01-16 40 views
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> 

回答

2

要逐字解決您的問題,與SupportMapFragment取代MapFragment,所以你必須:

karta = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.karta)).getMap(); 

但是,你有更大的問題。

您有Karta延伸SupportMapFragment。沒事兒。但是,然後,你要讓它膨脹一個不需要的佈局。此外,您正在使用包含MapFragment而不是SupportMapFragmentMapFragment在您的代碼中不起作用的佈局。

我認爲,如果你:

  • 刪除佈局
  • 刪除onCreateView()
  • 更改karta行,因爲我在這個答案的頂部建議

那麼我認爲你會好的。

+0

嗯我可能做錯了,但: 我用SupportMapFragment替換MapFragment,就像你說的那樣,並擺脫了錯誤。但是,如果我刪除了onCreateView,則會在「GoogleMap karta」中出錯;和那一行下面的行。 - 請參閱http://pastebin.com/gmFdJgvu中的評論。 如果我刪除佈局,它在哪裏定義了地圖的顯示位置? – Sluggo

+1

@Sluggo:你的語法錯誤是因爲你刪除了你的'onViewCreated()'方法的開始行。無論您在何處顯示此「Karta」片段,都會顯示地圖。 – CommonsWare

+0

..所以我應該保持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

相關問題