【问题标题】:NoSuchMethod error for ImageView.setColorFilterImageView.setColorFilter 的 NoSuchMethod 错误
【发布时间】:2011-05-19 20:35:30
【问题描述】:

所以我有一个 ListView,它根据列表中每个项目的优先级对图标进行颜色编码。例如,优先级 1 的工作订单有一个红色的工作订单图标。优先级 2 = 黄色等。

我使用 ImageView.setColorFilter(Color.whatever) 更改图标的颜色,它在我的 Samsung Galaxy Tab 和 HTC Hero 上运行良好,但是当我将应用程序加载到 HTC Droid Eris 上时,出现错误:

java.lang.NoSuchMethodError:android.widget.ImageView.setColorFilter

我不知道为什么它在其他所有设备上都能正常工作,但在这款手机上却不行。有任何想法吗?我在想这可能是由于 Eris 拥有 Android 2.1 而其余的是 2.2 或更高版本。但是我不认为2.2之前没有包含这样的基本方法!

非常感谢任何和所有帮助!当我被难住时,这个社区总是能提供帮助,而且 Google 不会吐出任何相关结果!提前致谢!

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果您查看 documentation 并按 API 版本进行过滤,您会看到这个重载:

    void setColorFilter(int color)
    

    在 API 版本 8(即 Android 2.2)中引入。

    但是,之前支持的其他重载:

    void setColorFilter(ColorFilter cf)
    void setColorFilter(int color, PorterDuff.Mode mode)
    

    你能用其中一种来代替吗?

    【讨论】:

    • 完美!谢谢!实际上,当我收到一封电子邮件说您已发布回复时,我自己也发现了它!感谢您的快速反馈!试图跟踪每个东西的发布版本是很糟糕的(目前这是阻止我发布 API 级别 7 应用程序的唯一方法,所以我可能只需要更改它)
    【解决方案2】:

    setColorFilter(int color) 是在 API 级别 8(版本 2.2)中引入的。

    setColorFilter 自 1.0 版以来还有两个其他版本,也许您可​​以使用它们来代替?

    【讨论】:

    • 谢谢!我将改用 (int color, PorterDuff.Mode mode) 方法。我接受 Jon Skeet 的回答只是因为他发布得更快,但我绝对感谢您的帮助!
    猜你喜欢
    • 2017-02-02
    • 2021-01-07
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2016-12-14
    • 2019-01-03
    相关资源
    最近更新 更多