2013-06-02 139 views
0

我已經加入一個MapView到我的XML佈局與節點像這樣:包含在框架mapview鑄造異常錯誤?

<fragment 
      android:id="@+id/map" 
      android:layout_width="100dip" 
      android:layout_height="100dip" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

在我的活動我已經引用它在OnCreate像這樣內:

map = (MapView) findViewById(R.id.map); 

地圖全局定義爲MapView地圖;

06-02 14:51:12.357: E/AndroidRuntime(32368): FATAL EXCEPTION: main 
06-02 14:51:12.357: E/AndroidRuntime(32368): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.KingNozzle/com.KingNozzle.KNAugmentedRealityActivity}: java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to com.google.android.gms.maps.MapView 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.os.Looper.loop(Looper.java:137) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread.main(ActivityThread.java:4745) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at java.lang.reflect.Method.invokeNative(Native Method) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at java.lang.reflect.Method.invoke(Method.java:511) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at dalvik.system.NativeStart.main(Native Method) 
06-02 14:51:12.357: E/AndroidRuntime(32368): Caused by: java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to com.google.android.gms.maps.MapView 
06-02 14:51:12.357: E/AndroidRuntime(32368): at com.KingNozzle.KNAugmentedRealityActivity.onCreate(KNAugmentedRealityActivity.java:129) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.Activity.performCreate(Activity.java:5008) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
06-02 14:51:12.357: E/AndroidRuntime(32368): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
06-02 14:51:12.357: E/AndroidRuntime(32368): ... 11 more 

我的整個佈局看起來像這樣:

<?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:gravity="center_vertical" > 

    <FrameLayout 
     android:id="@+id/arFrame" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </FrameLayout> 

    <TextView 
     android:id="@+id/textViewLocation" 
     android:layout_width="fill_parent" 
     android:layout_height="20dp" 
     android:text="no signal" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <fragment 

      android:id="@+id/map" 
      android:layout_width="100dip" 
      android:layout_height="100dip" 
      android:name="com.google.android.gms.maps.MapFragment"> 
      </fragment> 

    <com.KingNozzle.Views.KNMultiDirectionalSlidingDrawer 
     xmlns:my="http://schemas.android.com/apk/res/com.KingNozzle" 
     android:id="@+id/drawer" 
     my:direction="topToBottom" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     my:handle="@+id/handle" 
     my:content="@+id/content"> 

     <include 
      android:id="@id/content" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      layout="@layout/empty_rel" /> 



     <ImageView 
      android:id="@id/handle" 
      android:layout_width="wrap_content" 
      android:layout_height="40px" 
      android:src="@drawable/sliding_drawer_handle_bottom" /> 
    </com.KingNozzle.Views.KNMultiDirectionalSlidingDrawer> 

</RelativeLayout> 

不能似乎找出爲什麼它認爲它的框架視圖

+0

做你試着用乾淨重建? – Blackbelt

+0

我做了..我還沒有嘗試擺脫gen文件和乾淨.. – erik

+0

http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html – prvn

回答

2
在你

XML改變MapFragment到SupportMapFragment

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

在你的代碼

GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map)).getMap(); 
+0

supportmapfrag是做什麼的? – erik

+0

getSupportFragmentManager似乎並沒有一個有效的電話我在Eclipse中得到一個錯誤的權利要求我創建一個名爲getSupportFragment方法沒有導入選項或更改爲getFragmentManager – erik

+0

你應該有谷歌播放安裝服務,並添加Android的支持-V4 .jar到外部罐子 – prvn

3

這是一個MapFragment,而不是一個MapView。您應該查看MapFragment的文檔,以便在MapFragment中執行相同的操作。

因此,這可能是這樣的:

MapFragment map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
+0

如果我將它作爲MapFragment在我的Activity MapFragment map =(MapFragment)findviewById(R.id.mapView)中引用,錯誤的在我構建它之前,它不能作爲Eclipse中的視圖進行投射。 – erik

+0

@erik看到我更新的帖子 – koesie10