2012-10-12 11 views
6

मैं खेलते हैं और यह त्रुटि गूगल पर एक अद्यतन डाल दिया है: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 

मैं क्यों इस त्रुटि दिखाई कारण यह काम मेरी उपकरणों पर पूरी तरह से है समझ में नहीं आता

किसी को भी कोई विचार है?

यहाँ मेरी Manifest.xml का एक हिस्सा

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

धन्यवाद

उत्तर

10

android:theme="@style/Theme.Sherlock" का प्रयोग न करें है।

के अंदर setTheme(R.style.Theme_Sherlock); का उपयोग करें।

उदा।

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

    // What you want to do here 
} 
+1

आम तौर पर यह एक ही है यह है कि मैं ऐसा नहीं? – jaumard

+0

@jaumard हां, आप भी ऐसा कर सकते हैं, लेकिन यह आवश्यक नहीं है। आपको OnCreate में setTheme() डालने की आवश्यकता है, या यह क्रैश हो जाएगा। – Muz

+0

धन्यवाद लेकिन त्रुटि ठीक हुई थी मुझे नहीं पता कि कैसे ... ग्रहण के साथ एक संकलन त्रुटि हो सकती है। अगर मैं अपने मैनिफेस्ट में केवल एक बार रख सकता हूं तो मैं अपनी सभी गतिविधियों पर setTheme का उपयोग नहीं करना चाहता हूं। – jaumard

2

तुम बस Theme.Sherlock

से अपनी शैली इनहेरिट कर सकते हैं
<style name="MyAppTheme" parent="Theme.Sherlock"> 
तो प्रकट उपयोग अपने विषय में

android:theme="@style/MyAppTheme" 

आप Muz के रूप में प्रत्येक पृष्ठ पर setTheme उपयोग करने के लिए की जरूरत नहीं है ऐसा कहा जाता है कि जब बहुत बेहतर समाधान होते हैं तो यह बहुत काम करता है, उपरोक्त उत्तर को चिह्नित करेगा लेकिन मैं नहीं कर सकता !!

2

मैं matt_lethargic से सहमत हूं। मेरी शैली फ़ाइल में था:

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

मेरा आवेदन दुर्घटनाग्रस्त stoped के बाद मैं इसे करने के लिए बदल:

<style name="AppBaseTheme" parent="Theme.Sherlock"> 
संबंधित मुद्दे