Antwan
Antwan

Reputation: 3876

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. titanium

I'm creating a custom theme for my Titanium application using this theme generator. But when I run my application it's crashing and my log says that I need appCompact even if I set the theme for sdk > sdk 11.

And my targeting Android version is API 19 and min SDK version is API14, so I wonder why I need appCompact.

This is what my log says:

 [ERROR] :  TiApplication: (main) [512,512] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{a.s/org.appcelerator.titanium.TiActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.; Titanium 3.4.0,2014/09/25 16:42,b54c467
[ERROR] :  TiApplication: java.lang.RuntimeException: Unable to start activity ComponentInfo{a.s/org.appcelerator.titanium.TiActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
[ERROR] :  TiApplication:   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
[ERROR] :  TiApplication:   at android.app.ActivityThread.handleLaunchActivity(Activ
[ERROR] :  TiApplication:   at android.app.ActivityThread.access$800(ActivityThread.java:135)
[ERROR] :  TiApplication:   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
[ERROR] :  TiApplication:   at android.os.Handler.dispatchMessage(Handler.java:102)
[ERROR] :  TiApplication:   at android.os.Looper.loop(Looper.java:136)
[ERROR] :  TiApplication:   at android.app.ActivityThread.main(ActivityThread.java:5017)
[ERROR] :  TiApplication:   at java.lang.reflect.Method.invokeNative(Native Method)
[ERROR] :  TiApplication:   at java.lang.reflect.Method.invoke(Method.java:515)
[ERROR] :  TiApplication:   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
[ERROR] :  TiApplication:   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
[ERROR] :  TiApplication:   at dalvik.system.NativeStart.main(Native Method)
[ERROR] :  TiApplication: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
[ERROR] :  TiApplication:   at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:108)
[ERROR] :  TiApplication:   at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57)
[ERROR] :  TiApplication:   at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:516)
[ERROR] :  TiApplication:   at org.appcelerator.titanium.TiActivity.onCreate(TiActivity.java:18)
[ERROR] :  TiApplication:   at android.app.Activity.performCreate(Activity.java:5231)
[ERROR] :  TiApplication:   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
[ERROR] :  TiApplication:   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
[ERROR] :  TiApplication:   ... 11 more

Upvotes: 4

Views: 60657

Answers (7)

Amir Uval
Amir Uval

Reputation: 14893

It's a bit embarrassing to admit how I've encountered this error, but in a hope to save someone an hour or hair pulling - for me it was a stray ">" that I mistakenly copied into my AndroidManifest:

   <application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:fullBackupContent="@xml/my_backup_rules">
    android:hardwareAccelerated="true"
    android:icon="@mipmap/icon_l"
    android:label="@string/app_name"
    android:requiredForAllUsers="true"
    android:supportsRtl="true"
    android:theme="@style/MyAppTheme">

Too easy to miss if you have a very large manifest - the compiler doesn't complain.

Upvotes: 2

NovusMobile
NovusMobile

Reputation: 1833

I know it's very only question but you should include parent theme into your style.

   <!-- Base application theme. Transparent theme -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


    <style name="Transparent" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

Upvotes: 4

velraj
velraj

Reputation: 71

write the code in style-v11 folder

 name="AppBaseTheme" parent="Theme.AppCompat.Light"

and in styles-v14 folder

 name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"

Upvotes: 4

Sam
Sam

Reputation: 4284

ok please try this,

Add this attribute to your activity

android:theme="@style/Theme.AppCompat"

Upvotes: 9

Vipin Yadav
Vipin Yadav

Reputation: 767

Simply change the ActionBarActivity to Activity or FragmentActivity

Upvotes: 4

Jasmine John
Jasmine John

Reputation: 921

Delete all the styles in the library project. Specify Style folder only in main project not in library project. It worked for me :)

Upvotes: 1

Nathan Walters
Nathan Walters

Reputation: 4136

You are using an ActionBarActivity, which requires an AppCompat theme. I'm not sure how you'd do this with Titanium, but you'd either need to switch to an AppCompat theme or use a regular Activity (which shouldn't be a problem if you're targeting 11 or above).

Upvotes: 6

Related Questions