【问题标题】:Code works on Android studio emulator but not on my android mobile代码适用于 Android Studio 模拟器,但不适用于我的 android 手机
【发布时间】:2016-11-26 13:20:41
【问题描述】:

当我使用 Android Studio Emulator (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)

我该如何解决?

【问题讨论】:

  • 关于 getCount 的文档说明了什么?

标签: android android-emulator android-recyclerview


【解决方案1】:

您正在调用 API >= 23 (documentation) 中可用的方法,但您的手机只有已弃用的方法可用 (documentation)。要解决这个问题,您应该使用 support-v4 库中的ContextCompat.getColor(Context, int)

【讨论】:

  • 我决定用粗体和斜体格式代替随机颜色。它现在可以使用: ((CategoriaViewHolder)holder).getNomeTextView().setTypeface(null, Typeface.BOLD_ITALIC);
【解决方案2】:

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

这是需要 API 23 的调用

activity.getColor(int id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多