2013-03-05 9 views
10

मैं Android में 4.2.2 Android 4.2 से अपने प्रोजेक्ट अद्यतन देता है और मैं अचानक मेरी styles.xml में इस त्रुटि मिलती है:थीम ActionBarSherlock एपीआई स्तर त्रुटि

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
    <!-- Requires level 11. Current: 7 --> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> 
</style> 

मैं इसे कैसे ठीक कर सकता हूँ? एबीएस दस्तावेज़ों के मुताबिक यह कैसे किया जाना चाहिए। देखें: http://actionbarsherlock.com/theming.html

+0

अपनी मेनिफेस्ट फ़ाइल में 'minSdkVersion' की जांच करें ... –

+0

मैनिफेस्ट में आपका लक्ष्य और न्यूनतम एसडीके संस्करण क्या है? – waqaslam

+0

<उपयोग-एसडीके एंड्रॉइड: minSdkVersion = "7" एंड्रॉइड: targetSdkVersion = "17" /> यह 4.2 – Klaasvaak

उत्तर

11

मैं पुन: प्रारंभ करने की कोशिश की, लेकिन मैं अंत में परियोजना को साफ करने की जरूरत: क्लिक करें "परियोजना> साफ ..."

त्रुटि वापस हर बार मैं अपने styles.xml बचाया आया था। अभी के लिए, मैं त्रुटियों से बचने के लिए उस फ़ाइल को संपादित करते समय अपने न्यूनतम एपीआई स्तर को 11 अस्थायी रूप से सेट कर रहा हूं, और उसके बाद इसे वापस रीसेट कर रहा हूं और सफाई कर रहा हूं जब मैं इसे अपने कम-एपीआई-स्तर एमुलेटर पर चलाने के लिए चाहता हूं।

संपादित करें: आप अपने मिनट SDK संस्करण कृत्रिम रूप से उच्च छोड़ने पसंद नहीं है, यह भी मुझे,, 14 (कुछ अन्य उच्च संख्या) करने के लिए इसे बदलने के लिए के लिए AndroidManifest.xml बचाने यह सही वापस बदलने के काम करता है, और फिर से बचाओ

+0

आप सही हैं। शैलियों को संपादित करते समय हर बार त्रुटि को ट्रिगर करता है। जब आप प्रोजेक्ट को साफ करते हैं (कोई बिल्ड नहीं) त्रुटि समाप्त हो जाती है। जब आप शैलियों के साथ प्रोजेक्ट बनाते हैं। Xml बंद त्रुटि त्रुटि समाप्त हो जाती है। तो आप इसे कम एपीआई स्तर के साथ बना सकते हैं साथ ही इसे बंद करना होगा। – Klaasvaak

+0

@jgiles, क्या आप ओएसएक्स का उपयोग कर रहे हैं? मुझे ओएसएक्स पर एडीटी v21.1.0-569685 चलाने में एक ही समस्या का सामना करना पड़ रहा है।विंडोज़ पर मेरे सहकर्मी को विंडोज़ पर ऐसी कोई त्रुटि नहीं दिखती है, जो एक ही परियोजना को चलाती है। – nipponese

+0

नहीं, मैं उबंटू चला रहा हूं। – jgiles

10

मैं (रेखांकित तत्व पर CTRL-1) ग्रहण के सुझाव त्वरित सुधार के लिए इस्तेमाल किया और सिर्फ चेतावनी दमन उपकरण कहा: उपेक्षा = "NewApi"

<item name="android:actionBarStyle" tools:ignore="NewApi">@style/Widget.Styled.ActionBar</item> 

इस तरह से आप की जरूरत नहीं है पूरे लिंट चेतावनी को अनदेखा करने के लिए, जो अन्य मामलों में आसान हो सकता है, और जब भी आप फ़ाइल संपादित करते हैं तो आप लक्ष्य API को समायोजित किए बिना प्रोजेक्ट को संकलित कर सकते हैं।

अद्यतन: जैसा कि greg7gkb टिप्पणियों में बताया गया है: नामस्थान घोषणा (xmlns:tools="schemas.android.com/tools") को न भूलें।

<!--suppress AndroidLintNewApi --> 

जोड़ने से पहले आप स्कीमा की घोषणा से

+5

आदर्श समाधान - धन्यवाद। भूलें कि आपको xmlns घोषित करने की भी आवश्यकता है: xml में tools = "http://schemas.android.com/tools"। – greg7gkb

+0

आह टिप्पणी के लिए धन्यवाद, greg7gkb। मैं नेमस्पेस को भूल जाता हूं, खासकर जब ग्रहण स्वचालित रूप से उन्हें सम्मिलित करता है;) – Patrick

+0

+1 नोट के लिए कि ग्रहण स्वचालित रूप से त्वरित फ़िक्स के माध्यम से इसे सम्मिलित कर सकता है। – Natix

0

IntelliJ विचार (संभवतः भी ग्रहण) आप पूरी फ़ाइल के लिए एपीआई चेतावनी को दबाने सकते हैं। तो अपने xml फ़ाइल तो कुछ इस तरह दिखेगा:

<!--suppress AndroidLintNewApi --> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    < ... /> 
</resources> 
1

अंत में, तुम सच में विशेषता है जो है आप एक API विशिष्ट styles.xml फ़ाइल में त्रुटि है जोड़ना चाहिए।

यह तो जवाब का वर्णन इतना मैं कर सकता की तुलना में बेहतर: android:actionBarStyle requires API level 11

मुझे लगता है कि सभी अन्य उत्तर फिक्स नहीं हैं, लेकिन काम arounds (त्रुटि को नष्ट, लेकिन अंत में यह तय नहीं)।

संबंधित मुद्दे