web-dev-qa-db-fra.com

Erreur: MapFragment ne peut pas être converti en Android.support.v4.app.Fragment

Tout d'abord, j'ai regardé ici: Démarrer FragmentActivity à partir de l'activité et maintenant j'ai le problème suivant:

MapsActivity:

public class MapsActivity extends FragmentActivity {

private GoogleMap mMap;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maps);
    setUpMapIfNeeded();
}
...

et souhaitez le démarrer à partir de MainActivity avec:

startActivity(new Intent(this, MapsActivity.class));

L'activité est enregistrée dans Android Manifest:

<activity Android:name="de.xbjoernx.gapp.MapsActivity"></activity>

Erreur

FATAL EXCEPTION: main
Java.lang.RuntimeException: Unable to start activity ComponentInfo{de.xbjoernx.gapp/de.xbjoernx.gapp.MapsActivity}: Android.view.InflateException: Binary XML file line #2: Error inflating class fragment
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2308)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2358)
        at Android.app.ActivityThread.access$600(ActivityThread.Java:153)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1247)
        at Android.os.Handler.dispatchMessage(Handler.Java:99)
        at Android.os.Looper.loop(Looper.Java:137)
        at Android.app.ActivityThread.main(ActivityThread.Java:5227)
        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:795)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:562)
        at dalvik.system.NativeStart.main(Native Method)
Caused by: Android.view.InflateException: Binary XML file line #2: Error inflating class fragment
        at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:704)
        at Android.view.LayoutInflater.inflate(LayoutInflater.Java:466)
        at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
        at Android.view.LayoutInflater.inflate(LayoutInflater.Java:352)
        at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:323)
        at Android.app.Activity.setContentView(Activity.Java:1881)
        at de.xbjoernx.gapp.MapsActivity.onCreate(MapsActivity.Java:19)
        at Android.app.Activity.performCreate(Activity.Java:5104)
        at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1080)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2262)
        ... 11 more
Caused by: Java.lang.ClassCastException: com.google.Android.gms.maps.MapFragment cannot be cast to Android.support.v4.app.Fragment
        at Android.support.v4.app.Fragment.instantiate(Fragment.Java:394)
        at Android.support.v4.app.Fragment.instantiate(Fragment.Java:369)
        at Android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.Java:272)
        at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:676)
        ... 20 more

Des suggestions pour y remédier?

Merci jusqu'ici :)

45
Heisnberg

lorsque vous étendez FragmentActivity, ce qui indique que vous utilisez la bibliothèque de support v4 compatible avec la version inférieure d'Android. Remplacez MapFragment par SupportMapFragment dans votre fichier xml. SupportMapFragment est celui à utiliser avec le Android Support package. MapFragment est pour la version native de l'API niveau 11 des fragments.

143
Bhavesh Patadiya