2011-12-19 11 views
25

मैं एक ArrayAdapter का एक उपवर्ग इसNoSuchMethod?

public class ShoppingCartAdapter extends ArrayAdapter<ShoppingCart> { 

तरह की घोषणा की और सब कुछ ठीक काम कर रहा है है। अब अचानक (?) मैं

12-19 14:33:36.136: ERROR/AndroidRuntime(27326): FATAL EXCEPTION: main 
     java.lang.NoSuchMethodError: com.somewhere.mobile.fragment.ShoppingCartListFragment$ShoppingCartAdapter.addAll 

फेंकने 2.3.6 या 2.2 के साथ एक एमुलेटर चल मेरे नेक्सस एस पर इस के साथ समस्या है लेकिन यह अभी भी उदा पर बस ठीक काम करता है 3.2 के साथ मेरा ज़ूम।

मैं सुपर ऐड ऑल विधियों को ओवरराइड नहीं कर रहा हूं और चूंकि यह किसी डिवाइस पर काम करता है, मुझे यकीन नहीं है कि आगे कहां देखना है। कोई संकेत?

अद्यतन:

मैं

for (ShoppingCart cart : newCarts) { 
    adapter.add(cart); 
} 

और कहा कि काम करता है के साथ adapter.addAll (newCarts) को बदल दिया। मुझे लगता है कि यह जेनेरिक के साथ कुछ करने के लिए है लेकिन अभी तक इसे कम करने में असमर्थ रहे हैं।

उत्तर

44
addAll(...) 

एपीआई 11 (एंड्रॉइड 3.0) से शुरू किया गया है। यहां doc.

+0

रवींद्र इस प्रकार इस समस्या को हल करने के लिए ... यहां तक ​​कि उस पर जांच नहीं की स्थानों। मुझे मूर्ख। धन्यवाद –

+0

कोई समस्या नहीं आदमी! यह विधि बहुत उपयोगी है, यह बेकार है कि उन्होंने केवल एंड्रॉइड 3.0 से ही शुरुआत की है! – gwa

+1

तो एंड्रॉइड के पुराने संस्करण के लिए समाधान क्या है? – Emmy

12

addAll (...) कम API स्तरों में उपलब्ध नहीं है। यह एपीआई 11 और ऊपर में जोड़ा गया है। तो (...) जोड़ने के बाद से मैं ArrayLists अन्य में ठीक के लिए यह उपयोग कर रहा हूँ के रूप में उपयोग

for (int i = 0; i < contents.size(); i++) { 
     adapter.add(contents.get(i)); 
    } 
बजाय

//adapter.addAll(contents); //do not use addAll(...) 
+2

आप ऐसा करने से पहले रनटाइम पर बिल्ड संस्करण देखना चाहते हैं, फिर भी "रनटाइम पर सिस्टम संस्करण जांचें": http://developer.android.com/training/basics/supporting-devices/platforms.html। (क्योंकि आपको addAll को फेंकने और सभी उपकरणों के लिए एक बदसूरत मैनुअल लूप पर वापस जाने की आवश्यकता नहीं है, बस

+0

निर्माण की जांच करने वाले आईएमओ uglier है – Luke