代码适用于 Android studio 模拟器,但不适用于我的 android 手机

Code works on Android studio emulator but not on my android mobile

当我使用 Android Studio 模拟器 (Nexus 4 API 23) 模拟我制作的应用程序时,它运行完美。但是,当我使用我的手机 (Samsung SM-G3502T Android 4.3 API 18) 模拟同一个应用程序时,它会卡在下面的代码处:

    if(activity instanceof CategoriaListaActivity) {
        boolean isSelected = (categoriaSelectedId == item.getCodigo());
        ((CategoriaViewHolder)holder).getNomeTextView().setTextColor(isSelected ? activity.getColor(R.color.colorPrimaryDark) : activity.getColor(R.color.colorAccent));
    } 

Logcat 说:

E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.Restarter.getActivities
W/dalvikvm: VFY: unable to resolve instanceof 2042 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/Restarter;
D/dalvikvm: VFY: replacing opcode 0x20 at 0x006f
I/dalvikvm: Could not find method android.app.Activity.getColor, referenced from method catalog.raulfmiranda.com.catalog.ui.adapter.CategoriaRecyclerAdapter.onBindViewHolder
W/dalvikvm: VFY: unable to resolve virtual method 58: Landroid/app/Activity;.getColor (I)I
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0058
I/dalvikvm: Could not find method android.app.Activity.getColor, referenced from method catalog.raulfmiranda.com.catalog.ui.adapter.CategoriaRecyclerAdapter.onBindViewHolder
W/dalvikvm: VFY: unable to resolve virtual method 58: Landroid/app/Activity;.getColor (I)I
D/dalvikvm: VFY: replacing opcode 0x6e at 0x0067
D/AndroidRuntime: Shutting down VM
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41a7a8c8)
E/AndroidRuntime: FATAL EXCEPTION: main
                  java.lang.NoSuchMethodError: android.app.Activity.getColor
                      at catalog.raulfmiranda.com.catalog.ui.adapter.CategoriaRecyclerAdapter.onBindViewHolder(CategoriaRecyclerAdapter.java:52)
                      at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5825)

我该如何解决?

您正在调用 API >= 23 (documentation), but your mobile only has the deprecated method available (documentation) 中可用的方法。要解决这个问题,您应该使用 support-v4 库中的 ContextCompat.getColor(Context, int)

您正在使用需要 API 23 及更高版本的调用,并且在具有 API 23 的模拟器上进行测试时没问题,但在较低的 APIs 上没有

这是需要 API 23

的调用
activity.getColor(int id);