2015-10-27 8 views
23

सारांशत्रुटि 'कॉल एपीआई स्तर 23 की आवश्यकता है', लेकिन getForeground() API 1

अंत से FrameLayout पर मौजूद है, मैं संबंधित समस्या, setForeground() गलत तरीके से FrameLayout विस्तार ViewGroups पर एपीआई 23 की आवश्यकता होती है के रूप में चिह्नित पाया।

Issue 189041: setForeground() incorrectly flagged as requiring API 23 (NewApi) for ViewGroups extending FrameLayout

आप FrameLayout का विस्तार नहीं कर रहे हैं, प्रलेखन गलत है और एपीआई 23 की आवश्यकता है।

Issue 186273: View.setForeground wrong API level

अपडेट किया गया प्रश्न

duplicated of Can't use setForeground method on ImageView Commonsware द्वारा के रूप में चिह्नित है और उसके द्वारा उत्तर दिया:

एक प्रलेखन बग है कि। setForeground() API स्तर 1 से FrameLayout पर मौजूद था; यह एपीआई स्तर 23.

मेरे मामले में प्रलेखन बग कांटा में निरीक्षण नहीं पहचान पातीं के रूप में देखें पर ही है लेकिन एक एकीकरण परियोजना में यह होता है, मैं इसे वैसे भी, इस समझ में नहीं आता, मेरे प्रारंभिक प्रश्न का उत्तर दें।

लेकिन यह वही मामला नहीं है, इस कोड को पहले से ही एक Framelayout का विस्तार और इस पद्धति का उपयोग किया जाता है, यह एक ImageView नहीं है, तो मैं विधि एपीआई 23. में हटा दिया गया है यह संदर्भ में अब प्रकट नहीं होता लगता है।

अद्यतन: मैं FrameLayout के लिए एक diff report जोड़ें:

enter image description here

नए सवाल

तो पिछले संस्करणों में विधि का उपयोग करने के लिए, और मेरे सवाल का परिवर्तन, क्यों करता है निरीक्षण त्रुटि को चुनिंदा रूप से प्रकट करें?

मैं एक निरर्थक डाली जोड़ते हैं, तो त्रुटि संदेश गायब हो जाता है:

((FrameLayout) layout).getForeground() 

लेकिन यह View विधि है कि अब समर्थित नहीं है तक पहुँचने है।

तो मैं पिछले एक एपीआई को लक्षित मान लें कि त्रुटि संदेश को दूर होगा, लेकिन मैं इस Framelayout विधि या एक सुराग उपयोग करने के लिए मेरे मामले में इस मुद्दे को ठीक करने के लिए एक समाधान का स्वागत करेंगे:

ANDROID_COMPILE_SDK_VERSION=23 
ANDROID_BUILD_TOOLS_VERSION=23.0.1 
ANDROID_DEFAULT_MIN_SDK_VERSION=19 
ANDROID_DEFAULT_TARGET_SDK_VERSION=23 

वर्कअराउंड

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

प्रारंभिक सवाल

मैं काँटेदार और गूगल नमूना android-topeka अनुकूलित, और एंड्रॉयड स्टूडियो एक त्रुटि है कि मैं android.view में वर्ग View की विधि getForeground() उपयोग करने की आवश्यकता एपीआई स्तर के बारे में समझ में नहीं आता से पता चलता पैकेज: android.view.View # getForeground

:

कॉल की आवश्यकता है एपीआई स्तर 23 (वर्तमान मिनट 19 है)

reference निशान विधि एपीआई स्तर 1 में जोड़ा के रूप में, और प्रलेखन (Control+Q) एक ही पता चलता है:

Doc showing API level 1 method

लेकिन Calling new methods on older versions inspection एक त्रुटि है कि एपीआई स्तर 23 की आवश्यकता है पता चलता है:

Error message about API 23 required

मुझे उस मामले में एक बग similar question मिला, लेकिन मुझे लगता है कि मूल कांटा के कारण यह कोई बग नहीं है यह त्रुटि नहीं दिखाती है संदेश।

मैं पहली बार संदेश प्रकट होने का पता लगाने की कोशिश करूंगा, लेकिन मैंने बहुत सारे बदलाव किए हैं, इसलिए किसी भी सुराग की सराहना की जाएगी, धन्यवाद।

उत्तर

18

अंततः मुझे संबंधित समस्या मिली, setForeground() गलत समूह को FrameLayout तक व्यू ग्रुप के लिए एपीआई 23 की आवश्यकता के रूप में गलत तरीके से चिह्नित किया गया।

Issue 189041: setForeground() incorrectly flagged as requiring API 23 (NewApi) for ViewGroups extending FrameLayout

आप FrameLayout का विस्तार नहीं कर रहे हैं, प्रलेखन गलत है और एपीआई 23 वास्तव में आवश्यक है।

Issue 186273: View.setForeground wrong API level

+0

तो तुम यह पता लगाने की थी कि हम कैसे मिलता है या एपीआई 23 नीचे उपकरणों के लिए अग्रभूमि सेट कर सकते हैं? –

+1

यदि आप फ़्रेमलेआउट को विस्तारित कर रहे हैं, तो आप एक अनावश्यक कास्ट का उपयोग कर सकते हैं या प्रलेखन बग से बचने के लिए प्रकार को फ्रेमलेआउट में बदल सकते हैं। अन्यथा, यह संभव नहीं है, लेकिन हो सकता है कि अगला वर्कअराउंड आपके लिए उपयोगी हो http://stackoverflow.com/a/33201753/1009132 – albodelu

+0

सहायता के लिए धन्यवाद। –

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