2013-09-08 6 views
0

Dans l'application, je travaille avec un ActionBar Sherlock. L'erreur que je reçois semble être très étrange car j'utilise le même thème pour 2 autres activités dans l'application.Problèmes avec le thème 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> 

Style:

<!-- 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> 

Comme dans le manifeste, les activités ABC et XYZ travail sans erreurs. Je reçois mon erreur dans l'activité 123.

Error Log:

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 (ou 123.java) Ligne 29

setContentView(R.layout.123layout); 

je l'ai fait essayer d'utiliser le

setTheme(R.style.transTheme) 

dans le java cl cul qui s'est débarrassé de l'erreur mais cela n'a pas l'activité sa transparence. L'application fonctionne bien pour les appareils HoneyComb et ci-dessus. Je reçois seulement cette erreur sur les appareils ci-dessous Android 3.0. S'il vous plaît aider.

Répondre

1

Le problème est que vous n'utilisez pas le thème fourni par ActionBarSherlock. Vous devez utiliser Theme.Sherlock or Theme.Sherlock.Light or Theme.Sherlock.Light.DarkActionBar dans la barre d'action pour travailler.

  1. Option 1:

    Vous pouvez supprimer toute l'activité thématisation spécifique et ajouter le thème dans le contexte de l'application.

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

  2. Option 2:

    Vous pouvez modifier le

    <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. Option 3:

    Vous pouvez utiliser

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

    au lieu d'utiliser la

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

+0

En fait, je suis allé avec quelque chose de similaire à Option2 ... merci :) –

Questions connexes