2015-05-15 11 views
18

मुझे कुछ उपयोगकर्ता के फोन पर "nosuchmethod त्रुटि" मिल रही है (उदाहरण के लिए मोटोरोला रेजर i) लेकिन यह मेरे एचटीसी पर ठीक काम करता है। नीचे कोड है।क्यों निकालें() कुछ एंड्रॉइड डिवाइस पर काम नहीं करता है?

Drawable rBlack; 
rBlack = getResources().getDrawable(R.drawable.rblack, getTheme()); 

java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable 
at org.petero.droidfish.myClass.onCreate(myClass.java:434) 
at android.app.Activity.performCreate(Activity.java:5248) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) 
at android.app.ActivityThread.access$800(ActivityThread.java:139) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5102) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:619) 
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
at dalvik.system.NativeStart.main(Native Method) 

और अगर मैं इस कोड का उपयोग:

flipButton.setImageDrawable(getDrawable(R.drawable.rblack)); 

मैं यह त्रुटि

java.lang.NoSuchMethodError: org.myclass.getDrawable 
at org.myclass.onCreate(myclass.java:435) 
at android.app.Activity.performCreate(Activity.java:5248) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) 
at android.app.ActivityThread.access$800(ActivityThread.java:139) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5102) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:619) 
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
at dalvik.system.NativeStart.main(Native Method) 
+0

कौन सा है कि यौगिक अभिव्यक्ति का हिस्सा (संकेत है, यह कई पंक्तियों में टूट, तो स्टैक ट्रेस पोस्ट) विफल रहता है। R.drawable.rblack वास्तव में कहां परिभाषित किया गया है? क्या यह एक डीपीआई-विशिष्ट फ़ोल्डर में हो सकता है लेकिन दूसरे में नहीं? –

+0

java.lang.No.SuchMethodError: org.myclass.getDrawable ... rBlack केवल खींचने योग्य फ़ोल्डर के अंदर है, अन्य hdpi, ldpi आदि के अंदर नहीं ... क्या यह समस्या हो सकती है? – savante

+1

लॉककैट – Squonk

उत्तर

37

मुझे यकीन है के लिए यह getDrawable(R.drawable.rblack, getTheme()); जो एपीआई 21 में जोड़ा गया पर विफल हो रहा है जा रहा हूँ मिलता है। उस पंक्ति को बदलें:

if(android.os.Build.VERSION.SDK_INT >= 21){ 
    rBlack = getResources().getDrawable(R.drawable.rblack, getTheme()); 
} else { 
    rBlack = getResources().getDrawable(R.drawable.rblack); 
} 
+0

अद्यतन किया, मैंने दोनों की कोशिश की। (minSDK = 17) एक ही परिणाम – savante

+0

@ savante: न्यूनतम एसडीके कोई फर्क नहीं पड़ता, केवल एसडीके जो आप मामलों पर हैं। क्या आप इसे काम करने में सक्षम थे या नहीं? अब एक ही समस्या का सामना करना पड़ रहा है। – IcyFlame

+0

@IcyFlame से savante ने अपनी टिप्पणी के बाद अपना जवाब स्वीकार कर लिया था, मैं कहूंगा कि यह मानना ​​सुरक्षित है कि वे इसे मेरे समाधान का उपयोग करके काम कर रहे हैं। यदि यहां कोई भी समाधान आपके लिए काम नहीं करता है, तो मैं एक नया प्रश्न पूछने की सिफारिश करता हूं। आप इस प्रश्न के समाधानों से लिंक भी कर सकते हैं जैसा आपने पहले ही कोशिश की है ताकि आपको डुप्लिकेट प्रश्न के रूप में फ़्लैग नहीं किया जा सके। – ChrisStillwell

27
ContextCompat.getDrawable(Context context, int id) 
+1

सवाल यह है कि "क्यों कुछ एंड्रॉइड डिवाइस पर getDrawable() काम नहीं करता है?" *। यह सवाल का जवाब नहीं देता है। - [समीक्षा से] (http://stackoverflow.com/review/low-quality-posts/11165112) – Pang

+3

मुझे शर्त है कि ओपी एक समाधान चाहता था, न कि दुर्घटना का तकनीकी कारण। वास्तविक तिथि पर, यह सही उत्तर है। – ElYeante

+0

कुछ पुराने डिवाइस में भी यही बात हुई। ContextCompat के तरीकों का उपयोग करना सुरक्षित है। वास्तव में नहीं पता कि क्यों पहुंचा जा सकता है, यह चाहिए! – Lancelot

0

कोड की निम्न पंक्ति जोड़ने का प्रयास करें:

context.getResources().getDrawable(R.drawable.your_image_name); 
संबंधित मुद्दे