2012-10-12 22 views
6

Włożyłem aktualizacji w Google Play i zobaczyć ten błąd:java.lang.RuntimeException Theme.Sherlock

java.lang.RuntimeException: Unable to start activity 

ComponentInfo{com.jim2/com.jim2.SettingWidgetActivity}: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831) 
at android.app.ActivityThread.access$500(ActivityThread.java:122) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:132) 
at android.app.ActivityThread.main(ActivityThread.java:4123) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:491) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. 
at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:1007) 
at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:919) 
at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:853) 
at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:251) 
at com.jim2.SettingWidgetActivity.onCreate(SettingWidgetActivity.java:37) 
at android.app.Activity.performCreate(Activity.java:4397) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779) 
... 11 more 

ja nie rozumiem, dlaczego pojawia się ten błąd bo to praca doskonale na moich urządzeniach

Ktoś ma pomysł?

Tutaj jest częścią mojego manifest.xml

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

Dzięki

Odpowiedz

10

Nie używaj android:theme="@style/Theme.Sherlock".

Użyj setTheme(R.style.Theme_Sherlock); wewnątrz OnCreate.

E.g.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setTheme(R.style.Theme_Sherlock); 
    super.onCreate(savedInstanceState); 

    // What you want to do here 
} 
+1

Normalnie jest to samo jak to zrobić, prawda? – jaumard

+0

@jaumard Tak, możesz to zrobić, ale nie jest to konieczne. Musisz ustawić setTheme() w OnCreate, bo inaczej się zawiesi. – Muz

+0

Dzięki, ale błąd był naprawiony i nie wiem jak ... może błąd kompilacji z zaćmieniem. Nie chcę używać setTheme we wszystkich moich działaniach, jeśli mogę umieścić tylko jeden raz w moim manifeście. – jaumard

2

można dokonać tylko w stylu Dziedzicz Theme.Sherlock

<style name="MyAppTheme" parent="Theme.Sherlock"> 

następnie w oczywistego wykorzystania motywu

android:theme="@style/MyAppTheme" 

Nie trzeba używać setTheme na każdej stronie jako Muz powiedział, że wydaje się, że dużo pracy, gdy istnieje wiele lepszych rozwiązań, oznaczałoby powyższą odpowiedź w dół, ale nie mogę!

2

Zgadzam się z matt_lethargic. W moim pliku stylu to:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 

Moja aplikacja zatykać upaść po I zmienił go do:

<style name="AppBaseTheme" parent="Theme.Sherlock">