android 4.0 兼容性问题 java.lang.NoSuchMethodError TextView.setBackground

Android之解决java.lang.NoSuchMethodError:android.os.powerManager.isInteractive问题 1、问题 再三星平板(Android 4.2.2系统)我们代码powerManager调用了函数isInteractive方法,出现下面错误 java.lang.NoSuchMethodError:android.os.powerManager.isInteractive 2、解决办法 1、一开始想用try catch来解决,肯定不行,功能没实现,而且进程还是会 阅读详情

    Android 版本更替,新的版本带来新的特性,新的方法。

新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash。

本文以一个具体的例子说明如何在使用高API level的方法时处理好兼容性问题。

    在android开发中遇到了这样的一个问题 想实现一个通过点击一个文本来改变塔的状态的功能 这就用到了在代码中动态设置文本的背景色和字体颜色的功能

但是如果当前要兼容4.0版本会出现异常警告 ,先来看看官方的说明为什么会出现异常警告,见下图


我这里当前的最低版本设置的是14 也就是4.0 ICE_CREAM_SANDWICH

很多朋友都选择了比如说 @SuppressLint("NewApi") @TargeApi(16)  类似这样的注解 但是这样虽然再代码检查中是没错了,在实际运行中还是会抛出异常也可以参考 stackoverflow和推酷中的处理方法 通过判断当前的版来设置不同版本代码的来执行。

我这里用到的是同个设置TextView的Selected属性来替换颜色及背景的需要做的是在res资源文件中建立color和drawable文件夹来放置资源文件 

首先在drawable建立selector_text_bg.xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/selected" android:state_selected="true"/>
    <item android:drawable="@drawable/unselected" android:state_selected="false"/>

</selector>

建立不同状态对应的资源文件

接下来同理在color建立selector_text_color.xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true" android:color="@color/pink"/>
    <item android:state_selected="false" android:color="@color/white"/>

</selector>

建立不同状态对应的颜色资源


这样在布局文件中设置TextView的背景为selector_text_bg.xml 设置Textview的字体颜色为selector_text_color.xml这样就可以在代码中通过设置TextView的选择状态textview.setSelected(true);和textview.setSelected(false);来切换不同的背景和字体颜色以达到切换TextView的状态的目的。

官方文档(现在不好打开了,学习新的API的道路越来越曲折)中说

So you can safely use XML attributes that are only supported by newer versions without worrying about older versions breaking when they encounter that code.

如果在开发中遇到的各种各样的问题,你有更好的方法欢迎留言大家一起探讨,在讨论中学到更多。

转载请注明出处 http://blog.youkuaiyun.com/ylbf_dev/article/details/45967049





   

 

RK3566/RK3588 NPU性能实测:用mobilenet模型快速验证你的开发板NPU是否正常工作 本文提供了RK3566/RK3588开发板NPU性能实测指南,通过MobileNet模型快速验证NPU是否正常工作。详细介绍了环境搭建、测试资源获取、编译运行及结果分析的全流程,帮助开发者高效验证神经网络加速器功能,为后续AI应用部署奠定基础。 阅读详情

相关推荐

元数据及数据仓库相关概念

文章目录元数据(metadata)的概念Data about Data定义技术元数据业务元数据总结数据仓库ODS简单的理解为 Operational Data Store, 运营数据仓储 数据整合层(也叫做数据缓冲层)EDW简单理解为 Enterprise Data Warehouse, 企业数据仓库ODS与EDW之间的差异使用角色数据来源数据获取性能和及时性数据架构数据共享能力数据系统提供应用数...

frone的专栏 3137

Android java.lang.NoSuchMethodError: No virtual method ;or its super classes (declaration of

No virtual method *** in class *** or its super classes (declaration of '***' appears in /system/framework/framework.jar!classes3.dex) AOSP No virtual method

weixin_53620063的博客 1万+

[模型部署]-[LLM]昇腾部署Qwen3-Coder-30B-A3B-Instruct

摘要:本文介绍了在Ascend NPU上部署Qwen3-Coder-30B-A3B-Instruct大模型的实践过程。通过vLLM-Ascend框架,详细说明了环境准备(CANN 8.1、PyTorch-NPU 2.5.1等)、模型下载、容器启动及服务部署步骤,包括vLLM服务的启动参数配置和接口测试方法。测试结果显示在当前2卡910B3配置下性能表现仅为8token/s(1并发),并指出流式调用时存在无法输出usage信息的问题。该方案为Ascend平台私有化部署大模型推理服务提供了参考实现。

1671

如何解决Android出现的异常“java.lang.NoSuchMethodError: android.widget.LinearLayout.setBackground”?

如何解决Android出现的异常“java.lang.NoSuchMethodError: android.widget.LinearLayout.setBackground”?问题描述部分Android手机打开app报错,调试不报错,运行时报错。原因setBackground是Android4.1(API16)之后才提供的方法,所以4.1之前的系统会出现这个异常。解决使用setBackground

江南孤鹜——“知行合一”的Software Developer 6737

别再混淆了!一文彻底搞懂STM32的BootROM、BootLoader和启动模式(附启动流程图)

本文深入解析STM32的启动机制,详细讲解BootROM、BootLoader与启动模式的区别与联系,并提供实战指南。通过清晰的启动流程图和配置示例,帮助开发者彻底理解STM32启动流程,解决常见的启动问题,提升嵌入式开发效率。

weixin_33728268的博客 538

3D Slicer隐藏技巧:这样玩转医学影像分割与3D建模(含DICOM处理)

本文深入探讨3D Slicer在医学影像分割与3D建模中的高级应用技巧,包括多模态分割策略、三维可视化优化及DICOM数据处理。通过专业配置和Python脚本示例,帮助医疗AI开发者和影像科医师提升工作效率,实现精准的医学图像分析与建模。

weixin_28559803的博客 433

【Android错误总结】错误java.lang.NoSuchMethodError: android.ImageView.setBackground

启动app应用的时候,在logcat中报这个错误java.lang.NoSuchMethodError: android.ImageView.setBackground 。 解决方法:是版本的问题 Jelly bean(4.1)版本以下  是不支持setBackground  。所以改为setBackgroundDrawable就可以了 activityAttention.setBackgro

dodod2012的专栏 1604

《点亮创新灯塔!AI应用架构师与中小学初等教育AI智能体,共筑智能化教育辅助创新灯塔》

中小学AI智能体,是基于AI技术,能感知教育场景、理解教育规律、辅助教师教学和学生学习的智能系统。做老师“做不了”的事:比如5分钟批改45本作业,精准统计每个学生的易错点;做老师“做不好”的事:比如根据学生的学习风格(视觉/听觉/动觉)推荐个性化内容;绝不做老师“该做的事”:比如情感交流、价值观引导、创意教学设计——这些“人的温度”,AI永远无法替代。我是林宇,资深AI应用架构师,专注教育AI领域8年,参与过10多个中小学AI智能体项目,曾为北京、上海、深圳等城市的100多所学校提供AI教育解决方案。

Java大师兄的博客 433

Android中解决java.lang.NoSuchMethodError: android.view.View.setBackground

android View view 的

CatM的专栏 3807

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

使用运放构建电压跟随器

运放,是运算放大器的简称 运算放大器是用模拟电子器件(如晶体管,场效应管,二极管等)构成的模拟集成电路,其特点是有很高的放大倍数和抗干扰能力,因此可以被设计成各种用途的派生电路,如电压比较器、窗口电路、波形发生电路等等,其中也有电压跟随器。 电压跟随器是一种具有100%电压负反馈的放大器电路,其特点是输出电压的幅度和极性都与输入电压相同,所以叫跟随器。典型线路如图所示: 运放跟随器有输入阻抗高,而输出阻抗低的特性,一般来说,输入阻抗可以达到几兆欧姆,而输出阻抗低,通常只有几欧姆,甚至更低。 在电

Code for Coffee 5万+

java.lang.NoSuchMethodError的一般解决思路

今天在测试一个web项目时遇到一个问题:java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString,经过一番折腾终于解决,将解决思路梳理如下:java.lang.NoSuchMethodError其实是java项目最常见的问题之一,一般是由于引用的jar包版本过低引起的。...

古月慕南的代码世界 5万+

可信数据空间:可信空间、区域功能节点、业务功能节点、连接器的关联关系

可信数据空间通过分层架构实现安全数据共享:可信空间作为顶层制定全局规则;区域功能节点协调辖区内功能节点协作;功能节点提供具体数据服务;连接器作为唯一通信通道确保安全交互。系统采用"规则自上而下约束,数据自下而上流动"机制,通过分层治理和标准化连接,在保证数据主权的同时实现跨域协作,具有策略分级执行、去中心化治理等特性,支持灵活扩展业务场景。

友莘居士的博客 1685

Android解决java.lang.NoSuchMethodError: No virtual method into报错问题过程

最近项目中需要接入容联七陌客服系统,接入过程中将容联的Demo作为module添加到项目中,然后添加依赖,过程貌似很顺利,编译也没有问题,可是进入客服界面时,却报了下面的错误: 图片看起来不清晰,看报错代码: 06-13 17:16:11.546 30497-30497/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sami...

龙旋的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android错误: java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;...

Android Studio开发,时不时总是会碰到一些怪问题。比如使用Glide,大部分可能都碰到过这个错误, E/AndroidRuntime: FATAL EXCEPTION: main   Process: com.spacesoftwares.myapplication3, PID: 5768 java.lang.NoSuchMethodError:No static method ge...

tanmx219的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

同时兼容高低版本的setBackground跟setTextColor方法

设置颜色:setTextColor(ContextCompat.getColor((context,,R.color.theme_color)); 设置背景:setBackground(ContextCompat.getDrawable(context, R.mipmap.buy_transfer));

NERO-XXX的博客 621

java.lang.NoSuchMethodError: android.view.View.setBackground

今天给自定义控件设置drawable出现java.lang.NoSuchMethodError: android.view.View.setBackground,这是setBackground上下版本兼容型的问题;修改为如下代码即可: public void setImage(Drawable drawable) { int sdk = android.os.B...

A08110123的博客 226

java.lang.NoSuchMethodError:android.content.Context.getDrawable

在开发过程遇到需要在TextView上显示文字+图片。 因为数据返回是  这类格式的。 所以。 CharSequence charSequence = Html.fromHtml(html, new Html.ImageGetter() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public Draw

风华是一指流砂的专栏 5947

(小知识点) textview.setBackground不起作用

不知道什么原因 tv.setBackground()不起作用,一直不对,试了一下这句 textview.setBackgroundResource(R.color.xxx),就可以了,在color.xml文件中自定义颜色,还有为什么tv.setBackground()出错了呢,知道的指点一下啊!

yxl503248523的专栏 3554

android:java.lang.NoSuchMethodError: android.widget.PopupWindow.showAsDropDown

这个版本发生在android版本&amp;lt;16的时候,原来调用:public void showAsDropDown(View anchor, int xoff, int yoff, int gravity)要改为public void showAsDropDown(View anchor, int xoff, int yoff)。即去掉最后的gravity参数: 大致写法: if (Buil...

yu_duan_hun的博客 763

java.lang.NoSuchMethodError: org/w3c/dom/Element.setTextContent(Ljava/lang/String;)V 异常处理

这几天搞个应用,观察日志,有如下异常: 2014-04-25 11:32:21 StandardWrapperValve[PlatFormFilter]: Servlet.service() for servlet PlatFormFilter threw exception java.lang.NoSuchMethodError: org/w3c/dom/Element.setTextCon

weibkreuz的专栏 3727

异常NoSuchMethodError: android.app.Notification$Builder.build解决方案

02-24 10:05:24.731: E/AndroidRuntime(1577): java.lang.NoSuchMethodError: android.app.Notification$Builder.build 错误原因: Notification.Builder(context).build();方法不存在 解决方案: 将Notification.Builder改

云淡风轻的博客 4244

Android Studio 4.0.1 Java开发安卓应用 2:TextView

首先我们先写一行代码,然后按住Ctrl键再用鼠标左键点一下,会出现一个对话框,我们选“Accept”(译:接受)。 然后我们就进入了TextView的源代码部分了。 TextView中包含了4个构造函数: TextView(Context context) TextView(Context context, @Nullable AttributeSet attrs) TextView(Context context, @Nullable AttributeSet attrs, int defSt

lh1136863240的博客 628

Android 2.x.x版本下错误:java.lang.NoSuchMethodError: android.view.View.setBackground 解决

代码wen int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { setBackgroundDrawable(); } else { setBackground(); }

泰伯利亚 936

java.lang.NoSuchMethodError解决办法

但凡Java的开发者,想必遇到过java.lang.NoSuchMethodError的错误信息吧。究其源,这个错误基本上都是由JVM的"全盘负责委托机制"引发的问题:因为在类路径下放置了多个不同版本的类包,如commons-lang 2.x.jar和commons-lang3.x.jar都位于类路径中,代码中用到了commons-lang3.x类的某个方法,而这个方法在commons-lang2

losr0fly的专栏 4798

错误 java.lang.NoSuchMethodError: No static method getFont

java.lang.NoSuchMethodError: No static method getFont (Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/

阿希哥的博客 1万+
上一篇: Android之Activity与Service通信
下一篇: activity启动方式可能带来的一些bug
YLBF_DEV
博客等级 码龄12年 30粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值