1

我有一個應用程序使用操作欄選項卡。我試圖升級應用程序以使用Google Maps V2(MapFragment),但是當MapFragment從主活動傳遞到碎片容器時,它全部崩潰。是否可以將Google Maps V2 MapFragment放入ActionBar選項卡中?

MapFragment:

public class EstablishmentGoogleMapFragment extends MapFragment { 

    private GoogleMap mMap; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View root = super.onCreateView(inflater, container, savedInstanceState); 
     mMap = getMap(); 
     return root; 
    } 
} 

片段交易:

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     if(fragment == null){ 
      String fragmentName = fragmentClass.getName(); 
      fragment = Fragment.instantiate(activity, fragmentName); 
      ft.add(fragmentContainer, fragment, fragmentName); 
     } else { 
      ft.attach(fragment); 
     } 
    } 

的logcat:

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.rb.hellojson/com.rb.hellojson.EstablishmentGoogleMapFragment}: 
     java.lang.ClassCastException: com.rb.hellojson.EstablishmentGoogleMapFragment cannot be cast to android.app.Activity 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2024) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 
    at android.app.ActivityThread.access$600(ActivityThread.java:140) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4898) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: com.rb.hellojson.EstablishmentGoogleMapFragment cannot be cast to android.app.Activity 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1057) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2015) 
    ... 11 more 
+0

什麼是崩潰(logcat)?你的代碼在哪裏? – 2013-04-05 18:37:39

+0

我已更新問題正文 – wkdshot 2013-04-05 18:42:30

+0

您可以添加Manifest文件嗎? – 2013-04-05 18:54:05

回答

1

這個錯誤應該是清楚的:

Caused by: java.lang.ClassCastException: com.rb.hellojson.EstablishmentGoogleMapFragment cannot be cast to android.app.Activity

您是否試圖對此片段執行startActivity或什麼?

對於以後的修復:mMap = getMap();將在此時(或可能不會)返回null。

編輯:

東西開始你的片段,就像是一個活動。如果它不是啓動器,因爲碎片是在清單中定義的...

+0

嘿,謝謝你的回覆。不,它是碎片交易的一部分。我會更新問題主體以顯示。 – wkdshot 2013-04-05 18:47:20

+0

getMap()在這裏不返回null,但是您正確的是該片段試圖作爲清單的一個活動開始。請你可以編輯,我會批准答案。 – wkdshot 2013-04-05 19:14:08

+0

@wkdshot編輯 – 2013-04-05 19:17:02

相關問題