このテーマを使用して、Titaniumアプリケーションのカスタムテーマを作成しています generator 。しかし、アプリケーションを実行するとクラッシュし、sdk> sdk 11のテーマを設定した場合でも、ログにappCompact
が必要であると表示されます。
そして、私のターゲティングAndroidバージョンはAPI19で、最小SDKバージョンはAPI14なので、なぜappCompact
が必要なのか疑問に思います。
これは私のログが言っていることです:
[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
ActionBarActivity
を使用していますが、これにはAppCompatテーマが必要です。 Titaniumでこれをどのように行うかはわかりませんが、AppCompatテーマに切り替えるか、通常のActivity
を使用する必要があります(11をターゲットにしている場合は問題ありません)。以上)。
わかりました、これを試してください、
この属性をアクティビティに追加します
Android:theme="@style/Theme.AppCompat"
私はそれが非常に唯一の質問であることを知っていますが、あなたはあなたのスタイルに親のテーマを含めるべきです。
<!-- 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>
style-v11フォルダーにコードを記述します
name="AppBaseTheme" parent="Theme.AppCompat.Light"
およびstyles-v14フォルダー
name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"
ActionBarActivityをActivityまたはFragmentActivityに変更するだけです
私がこのエラーにどのように遭遇したかを認めるのは少し恥ずかしいですが、誰かを1時間または髪の毛を引っ張るのを節約することを願って、私にとっては迷いました ">"私は誤って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">
マニフェストが非常に大きい場合、見逃しがちです。コンパイラは文句を言いません。
ライブラリプロジェクトのすべてのスタイルを削除します。ライブラリプロジェクトではなく、メインプロジェクトでのみスタイルフォルダを指定します。それは私のために働いた:)