2013-09-08 2 views
0

В приложении я работаю с ActionBar Sherlock. Ошибка, которую я получаю, кажется очень странной, поскольку я использую ту же тему для 2 других действий в приложении.Проблемы с ActionBarSherlock темы

Manifest:

 <activity 
      android:name=".ABC" 
      android:label="@string/app_name" 
      android:theme="@style/transTheme" > 
      <intent-filter > 
       <action android:name="com.example.ABC"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".XYZ" 
      android:label="@string/app_name" 
      android:theme="@style/transTheme" > 
      <intent-filter > 
       <action android:name="com.example.XYZ"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".123" 
      android:label="@string/app_name" 
      android:theme="@style/transTheme" > 
      <intent-filter > 
       <action android:name="com.example.123"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

Стиль:

<!-- Transparent Layout Themeing --> 
<style name="transTheme" parent="android:style/Theme.Translucent"> 
    <item name ="android:windowNoTitle">true</item> 
    <item name ="android:windowContentOverlay">@null</item> 
    <item name ="android:backgroundDimEnabled">true</item> 
    <item name ="android:background">@android:color/transparent</item> 
</style> 

Как и в файле манифеста, деятельность ABC и XYZ работать без ошибок. Я получаю ошибку в деятельности 123.

Журнал ошибок:

09-08 10:40:08.446: E/AndroidRuntime(23791): FATAL EXCEPTION: main 
09-08 10:40:08.446: E/AndroidRuntime(23791): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vaw.selfhelp/com.vaw.selfhelp.SureSMS}: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.os.Looper.loop(Looper.java:130) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread.main(ActivityThread.java:3687) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at java.lang.reflect.Method.invokeNative(Native Method) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at java.lang.reflect.Method.invoke(Method.java:507) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at dalvik.system.NativeStart.main(Native Method) 
09-08 10:40:08.446: E/AndroidRuntime(23791): Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:1003) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:915) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:849) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.actionbarsherlock.app.SherlockActivity.setContentView(SherlockActivity.java:229) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at com.vaw.selfhelp.SureSMS.onCreate(SureSMS.java:29) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-08 10:40:08.446: E/AndroidRuntime(23791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
09-08 10:40:08.446: E/AndroidRuntime(23791): ... 11 more 

SureSMS.java (или 123.java) линии 29

setContentView(R.layout.123layout); 

я попробовать использовать

setTheme(R.style.transTheme) 

в java cl задницу, которая избавилась от ошибки, но это не привело к ее прозрачности. Приложение отлично работает для устройств HoneyComb и выше. Я получаю эту ошибку только на устройствах под Android 3.0. Пожалуйста, помогите.

ответ

1

Проблема в том, что вы не используете тему, предоставленную ActionBarSherlock. Для работы вы должны использовать Theme.Sherlock or Theme.Sherlock.Light or Theme.Sherlock.Light.DarkActionBar.

  1. Вариант 1:

    Вы можете удалить всю активность специфических тематизации и добавить тему в контекст приложения.

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Sherlock" >

  2. Вариант 2:

    Вы можете изменить

    <activity android:name=".123" android:label="@string/app_name" android:theme="@style/transTheme" >

    в

    <activity android:name=".123" android:label="@string/app_name" android:theme="@style/Theme.Sherlock" >

  3. Вариант 3:

    Вы можете использовать

    <style name="transTheme" parent="android:style/Theme.Sherlock">

    вместо использования

    <style name="transTheme" parent="android:style/Theme.Translucent">

+0

я на самом деле пошел с чем-то подобным option2 ... спасибо :) –

Смежные вопросы