Reputation:
I have MainActivity class which have method which instantiate ApplicationBar, all other Activities are inherited form this MainActivity
so they can use this method.
But I also have a class MapHolder which has to be extended from FragmentActivity
as in xml it uses a fragment
to display map. The issue is if I extend it from FragmentActivity
I cannot display ApplicationBar Tabs and if I extend it from MainActivity than I can't display maps and it gives this error:
LogCat Output:
09-29 17:52:10.107: E/GooglePlayServicesUtil(3788): Google Play services is invalid. Cannot recover.
09-29 17:52:43.536: E/AndroidRuntime(3832): FATAL EXCEPTION: main
09-29 17:52:43.536: E/AndroidRuntime(3832): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydomain.myproj/com.mydomain.myproj.MapHolder }: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.os.Looper.loop(Looper.java:137)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-29 17:52:43.536: E/AndroidRuntime(3832): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 17:52:43.536: E/AndroidRuntime(3832): at java.lang.reflect.Method.invoke(Method.java:525)
09-29 17:52:43.536: E/AndroidRuntime(3832): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-29 17:52:43.536: E/AndroidRuntime(3832): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-29 17:52:43.536: E/AndroidRuntime(3832): at dalvik.system.NativeStart.main(Native Method)
09-29 17:52:43.536: E/AndroidRuntime(3832): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
09-29 17:52:43.536: E/AndroidRuntime(3832): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Activity.setContentView(Activity.java:1895)
09-29 17:52:43.536: E/AndroidRuntime(3832): at com.mydomain.myproj.MapHolder .onCreate(MapHolder .java:19)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Activity.performCreate(Activity.java:5133)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-29 17:52:43.536: E/AndroidRuntime(3832): ... 11 more
09-29 17:52:43.536: E/AndroidRuntime(3832): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Fragment.instantiate(Fragment.java:585)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Fragment.instantiate(Fragment.java:560)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.app.Activity.onCreateView(Activity.java:4738)
09-29 17:52:43.536: E/AndroidRuntime(3832): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
09-29 17:52:43.536: E/AndroidRuntime(3832): ... 20 more
Upvotes: 0
Views: 9578
Reputation: 2821
If you are using com.google.android.gms.maps.SupportMapFragment your activity must extends android.support.v4.app.FragmentActivity instead of android.app.Activity
Upvotes: 0
Reputation: 1006674
You are attempting to cast a SupportMapFragment
to be a native API Level 11 android.app.Fragment
. That will not work. Either:
Set your android:minSdkVersion
to 11 or higher, and use MapFragment
instead of SupportMapFragment
, or
Cast your SupportMapFragment
to be an android.support.v4.app.Fragment
The issue is if I extend it from FragmentActivity I cannot display ApplicationBar Tabs
The action bar was added to Android in API Level 11. If you wish to use an action bar on older versions of Android, you will need to use a backport, either ActionBarSherlock or the AppCompat backport in the Android Support package.
Upvotes: 4