AppCompatActivity.onCreate केवल एक ही पुस्तकालय समूह के भीतर से बुलाया जा सकता है


107

Appcompat में अपग्रेड करने के बाद 25.1.0मुझे वायर्ड त्रुटियां होने लगी हैं।

मेरे कोड में:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

मुझे एकमुश्त त्रुटि मिली:

AppCompatActivity.onCreate can only be called from within the same library group (groupId=com.android.support)

ऐसे व्यवहार को कैसे रोका जाए?


6
के invalidateOptionsMenu()साथ बदलें supportInvalidateOptionsMenu()। यह काम करना चाहिए
ᴛʜᴇᴘᴀᴛᴇʟ

1
मैं अपने कोड में ऐसे तरीकों का उपयोग नहीं करता हूं
पिक्सेल

3
ऐसा लगता है कि यह एक बग है: code.google.com/p/android/issues/detail?id=230387
फेलिप लीमा

जवाबों:


95

जैसा कि फेलिप ने पहले ही अपनी टिप्पणी में कहा था कि यह उपकरण के पूर्व-रिलीज़ संस्करण में एक बग है।

जब तक Google आपके प्रोजेक्ट मॉड्यूल की build.gradle फ़ाइल में निम्नलिखित जोड़कर, आपको एक फ़्री रिलीज़ नहीं कर देता, तब तक आप इसे हल कर सकते हैं:

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

यह ध्यान देने योग्य है कि यह आपकी परियोजना में सच्ची त्रुटियों को छिपा सकता है क्योंकि यह उस प्रकार की सभी त्रुटियों को दबा देता है, इसलिए बेहतर विकल्प एंड्रॉइड स्टूडियो के संस्करण और परियोजना में उपयोग किए गए टूल को डाउनग्रेड करना होगा।


5
मैं नीचे @ Cbr के उत्तर का सुझाव दूंगा, यह केवल विधि स्तर पर दबा है, और यह इसके विपरीत एंड्रॉइड स्टूडियो 3 पर काम करता है //noinspection RestrictedApi
साकिबॉय

137

जैसा कि पिछली प्रतिक्रियाओं पर प्रकाश डाला गया, यह बग है। मैं सलाह देता हूं कि विशिष्ट लिंट चेतावनी परियोजना को अक्षम न करें, लेकिन केवल उस विधि के लिए। अपनी विधि इस प्रकार है:

@SuppressLint("RestrictedApi")
@Override
public void setupDialog(Dialog dialog, int style) {
    super.setupDialog(dialog, style);
    //your code here
}

4
यह उत्तर सबसे अच्छा है क्योंकि यह विश्व स्तर पर अक्षम नहीं है, यह आईडीई और संकलन समय में त्रुटि / चेतावनी को हल करता है, यह समझना आसान है क्योंकि यह विधि के शीर्ष पर स्पष्ट रूप से सूचीबद्ध है (इसके विपरीत //noinspection RestrictedApiजो एक टिप्पणी के रूप में छिपा हुआ है, और केवल आईडीई में चेतावनी को चुप करता है, लेकिन संकलन के समय नहीं), और यह एंड्रॉइड स्टूडियो और ग्रैडल के नवीनतम संस्करण के साथ काम करता है।
साकिबॉय

1
इस उत्तर का उपयोग किया जाना चाहिए। परियोजना पर वैश्विक अक्षम करने के लिए कभी भी अच्छा विचार नहीं है।
क्रिस्टोफर स्मिट

1
आप इस एनोटेशन का उपयोग केवल उस लाइन पर कर सकते हैं जिसकी आपको ज़रूरत है इसके बजाय पूरी विधि को दबाने के लिए
बेन केन

64

LintOptions में चेतावनी को अक्षम करना एक अच्छा विकल्प नहीं दिखता है जो कथन स्तर पर निरीक्षण को दबाने के लिए बेहतर है।

इस टिप्पणी को कोड की लाइन के ऊपर जोड़ें जो चेतावनी देती है:

//noinspection RestrictedApi

2
मैं इसके साथ जा रहा हूं। मैं बेहतर समाधान हो सकता है कि विश्व स्तर पर लिंटेशन को निष्क्रिय न करें। Thx
योरको गोंजालेस

4
एंड्रॉइड स्टूडियो में काम नहीं करता है 3. क्या कुछ बदलाव हुए थे?
वोवहॉस्ट

13
@vovahost मैं का उपयोग @SuppressLint("RestrictedApi")करने के बजाय //noinspection RestrictedApiमें एंड्रॉयड स्टूडियो 3 कोई समस्या नहीं के साथ
वेक्टर

1
हाँ, यह निश्चित है कि एक मेरे लिए भी काम करता है, लेकिन // noinspection केवल एक कथन के लिए काम करता है जो बेहतर है।
vovahost

1
@ साकिबॉय Cbr का समाधान पूरी विधि पर लागू होता है जिसे मैं उपयोग नहीं करना चाहता था क्योंकि यह अन्य त्रुटियों को छिपा सकता है।
वोवहॉस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.