为什么getDrawable()在某些Android设备上不起作用?

sav*_*nte 22 android android-drawable

我在一些用户的手机(例如摩托罗拉Razr i)上得到"nosuchmethod错误",但它在我的HTC上工作正常.下面是代码.

Drawable rBlack;
rBlack = getResources().getDrawable(R.drawable.rblack, getTheme());
Run Code Online (Sandbox Code Playgroud)

如果我使用此代码:

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)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

flipButton.setImageDrawable(getDrawable(R.drawable.rblack));
Run Code Online (Sandbox Code Playgroud)

Chr*_*ell 45

我打赌它getDrawable(R.drawable.rblack, getTheme());在API 21中添加了失败.将该行更改为:

if(android.os.Build.VERSION.SDK_INT >= 21){
    rBlack = getResources().getDrawable(R.drawable.rblack, getTheme());
} else {
    rBlack = getResources().getDrawable(R.drawable.rblack);
}
Run Code Online (Sandbox Code Playgroud)


小智 28

ContextCompat.getDrawable(Context context, int id)
Run Code Online (Sandbox Code Playgroud)

  • 我打赌他想要一个解决方案,而不是崩溃的技术原因.在实际日期,这是正确的答案. (4认同)
  • 问题是“为什么 getDrawable() 在某些 Android 设备上不起作用?”*。这根本没有回答问题。- [来自评论](http://stackoverflow.com/review/low-quality-posts/11165112) (2认同)