2013-07-17 49 views
1

我有這個在我的課Android的谷歌地圖V2所致com.google.android.gms.maps.SupportMapFragment不能轉換到android.app.Fragment

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

import com.coffeeandcookies.ushuaiamovil.R; 

public class LayMapa2 extends FragmentActivity 
{ 
    @Override 
    protected void onCreate(Bundle arg0) 
    { 
     setContentView(R.layout.lay_mapa2); 
     super.onCreate(arg0); 
    } 
} 

這在我的XML

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.google.android.gms.maps.SupportMapFragment" /> 

這在我manifiest

<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-feature android:glEsVersion="0x00020000" 
       android:required="true"/> 

    <permission 
     android:name="com.coffeeandcookies.usuahiamovil.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="com.coffeeandcookies.usuahiamovil.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

<meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="saasadsad" /> 

我有谷歌,播放services_lib如圖書館proyect在我的工作區和Android的支持,v4.jar

這是我的logcat

07-17 11:46:10.945: E/AndroidRuntime(8241): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.coffeeandcookies.ushuaiamovil/com.coffeeandcookies.vistas.LayMapa2}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread.access$600(ActivityThread.java:140) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.os.Looper.loop(Looper.java:137) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread.main(ActivityThread.java:4895) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at dalvik.system.NativeStart.main(Native Method) 
07-17 11:46:10.945: E/AndroidRuntime(8241): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:306) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Activity.setContentView(Activity.java:1912) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at com.coffeeandcookies.vistas.LayMapa2.onCreate(LayMapa2.java:14) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Activity.performCreate(Activity.java:5163) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  ... 11 more 
07-17 11:46:10.945: E/AndroidRuntime(8241): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Fragment.instantiate(Fragment.java:577) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Fragment.instantiate(Fragment.java:552) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.app.Activity.onCreateView(Activity.java:4806) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
07-17 11:46:10.945: E/AndroidRuntime(8241):  ... 20 more 

謝謝!

回答

7

開關super.onCreate第一,然後的setContentView。

這是因爲super.onCreate調用框架的Activity.onCreate分配膨脹任何佈局所需要的資源。因此,必須在膨脹任何佈局之前調用xml/programmatic。

+0

我愛你maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan !!!!!!!!!!你是我的herooooooooooooooooooooooooooooooooo !!!!! – benoffi7

+0

如果這個答案有幫助。點擊綠色支票接受爲asnwer。 – wtsang02

+0

是的,我幾分鐘。我不能在第10分鐘的張貼的問題 – benoffi7

1

更改您這樣的代碼:

public class MainActivity extends FragmentActivity { 

    private GoogleMap map; 
    private LatLng ltlng; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.activity_main); 

     } 
} 
0

檢查Bhavesh Patadiya的答案,https://stackoverflow.com/a/18227605/2684720

如要擴展FragmentActivity這表明你正在使用支持庫V4與Android的低版本兼容。用xml文件中的SupportMapFragment替換MapFragment。 SupportMapFragment是與Android支持包一起使用的。 MapFragment適用於本地API級別11版本的片段。