layout使用继承TextView,Activity未使用,报java.lang.NullPointerException一例

java.lang.NullPointerException出现的几种原因及解决方案 java.lang.NullPointerException(空指针异常)是Java开发中常见错误,多因对null对象执行操作所致。常见原因包括:调用null对象的方法或属性、将null作为数组访问、null参与自动拆箱、集合未初始化就操作等。 解决方案涵盖:调用前判空(如if语句、Objects.requireNonNull)、初始化对象与集合、使用Optional类规避风险、借助IDE调试定位null源头等。掌握其成因与解决办法,能有效提升代码健壮性,减少程序崩溃隐患,是Java开发者必备技能。 阅读详情
Android 2.3.3         
Eclipse Version: 3.7.0         
LogCat   


AutoScrollTextView继承TextView,用于文字特殊效果显示,代码如下:

public class AutoScrollTextView extends TextView implements OnClickListener {
	……
	public void onDraw(Canvas canvas) {
		……
		canvas.drawText(text, temp_view_plus_text_length - step, y, paint);
		……
	}
	……
}


Activity中使用:

	taobaoTextView = (AutoScrollTextView) findViewById(R.id.text);


Activity对应的layout :

		<com.taobao.util.AutoScrollTextView
			android:id="@+id/text" android:text="text" android:layout_height="fill_parent"
			android:layout_width="40px" android:textColor="#999"
			android:layout_gravity="right" android:background="#333">
		</com.taobao.util.AutoScrollTextView>


当Activity中取消使用AutoScrollTextView,而layout 未删除有关AutoScrollTextView的配置时,
LogCat 报错信息:

02-07 12:06:58.728: DEBUG/AndroidRuntime(1034): Shutting down VM
02-07 12:06:58.728: WARN/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): FATAL EXCEPTION: main
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): java.lang.NullPointerException
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.graphics.Canvas.drawText(Native Method)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at com.taobao.util.AutoScrollTextView.onDraw(AutoScrollTextView.java:181)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.View.draw(View.java:6880)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.View.draw(View.java:6883)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.draw(ViewRoot.java:1522)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.os.Handler.dispatchMessage(Handler.java:99)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.os.Looper.loop(Looper.java:123)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at java.lang.reflect.Method.invokeNative(Native Method)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at java.lang.reflect.Method.invoke(Method.java:507)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-07 12:06:58.747: ERROR/AndroidRuntime(1034): at dalvik.system.NativeStart.main(Native Method)
02-07 12:06:58.797: WARN/ActivityManager(61): Force finishing activity com.taobao.tmall/.PlayAd
02-07 12:06:58.807: WARN/ActivityManager(61): Force finishing activity com.taobao.tmall/.WakeUp



发生错误原因分析:

	canvas.drawText(text, temp_view_plus_text_length - step, y, paint);

此处的paint为null,报错。

解决办法:在AutoScrollTextView.java中初始化paint,为其赋值。

	paint = getPaint();

 

Android MVVM实战:LiveData与Data Binding原理与避坑指南 LiveData是Android Jetpack中专为UI生命周期设计的状态观察者,其核心价值在于自动绑定LifecycleOwner并精准解绑,避免内存泄漏;Data Binding则通过编译期生成ViewDataBinding类,将XML声明式逻辑与Java/Kotlin代码解耦,显著提升UI渲染性能与可维护性。二者协同构成轻量、稳定、易调试的MVVM落地方案,特别适用于电商、金融等对稳定性与迭代效率要求严苛的商用App开发。本文聚焦真实项目中的状态管理、双向绑定、生命周期感知及高频编译/运行时问题,提 阅读详情

相关推荐

Android应用启动闪退排查指南:从日志分析到系统配置

在移动应用开发中,应用启动崩溃是常见的运行时异常问题,通常表现为应用启动后立即退出。这类问题的根源可能涉及空指针异常、资源加载失败或线程安全等多种底层原理。从技术价值角度看,快速定位和解决启动崩溃不仅能提升应用稳定性,还能优化用户体验和降低用户流失率。在实际工程实践中,开发者需要掌握日志分析、依赖管理和配置检查等核心技能。本文聚焦Android平台,通过解析Logcat日志、排查Gradle依赖冲突和AndroidManifest配置等典型场景,系统介绍应用闪退的排查方法。其中,空指针异常和依赖冲突是导致启

weixin_34416754的博客 399

仅layout使用继承TextView,报java.lang.NullPointerException

Android 2.3.3 Eclipse Version: 3.7.0 LogCat  AutoScrollTextView继承TextView,用于文字特殊效果显示,代码如下: public class AutoScrollTextView extends TextView implements OnClickListener { ...

DebugLog的专栏 219

Android RecyclerView 与 Data Binding 正确解耦实践

Data Binding 是 Android 中实现 UI 与数据单向绑定的编译期技术,其核心原理是通过 XML 的 <layout> 标签生成类型安全的 Binding 类,在运行时将数据变量映射到视图属性。它不替代 Adapter 的数据管理职责,而是将 findViewById 和 setText 等胶水代码从 ViewHolder 中剥离,提升可维护性与类型安全性。技术价值体现在减少模板代码、增强编译期校验、支持表达式绑定与事件解耦;典型应用场景包括列表项动态渲染、多类型 Item 分离、状态驱动

cunfuteng7334的博客 457

android widget textview,TextView 会报错

这个自定义视图应该继承android.support.v7.widget.AppCompatTextView,我是这样写的成功,不过在eclipse下的。packagecom.example.studyandroid;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.widget.Text...

weixin_39853131的博客 795

DialogFragment 生命周期治理与安全弹窗实践指南

DialogFragment 是 Android 中基于 Fragment 生命周期管理对话框的核心机制,其本质并非 UI 组件,而是将 Dialog 纳入 FragmentManager 统一调度的生命周期契约。它通过 Fragment 的 attach→create→view→resume 完整链路,解决横竖屏重建、返回键响应、状态丢失等传统 Dialog 的顽疾。技术价值在于实现 UI 与生命周期解耦、支持 ViewModel 协同、兼容 Navigation 组件,并规避内存泄漏与 Transact

weixin_36250534的博客 371

Android RecyclerView 上拉加载更多:原生实现与状态机设计

RecyclerView 的上拉加载更多(Endless Scrolling)本质是滚动边界检测、数据状态同步与 UI 响应协同的工程问题。其核心原理在于通过 LinearLayoutManager 的 findLastCompletelyVisibleItemPosition 精确判断触底时机,结合 LoadState 状态机隔离业务逻辑与 UI 渲染,避免重复请求、状态错乱与主线程卡顿。技术价值体现在高可控性、低耦合性及对嵌套滚动、Header、动态高度等复杂场景的鲁棒支持。典型应用于资讯流、电商列表、

dechen6073的博客 383

java.lang.NullPointerException at android.view.GLES20Canvas.setupModifiers

java.lang.NullPointerException at android.view.GLES20Canvas.setupModifiers 一般报这种错误的时候,没有指定到哪个具体的位置,为什么会出现空指针,主要是因为这个是SDK里面的framework层出现系统异常,好在这个错误我解决了,下面我就来分享下是怎么解决的:以下是修改前文件 xml version="

guochengabcd的博客 1313

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1279

Trae:Android开发工作流的语义化重构引擎

在移动开发领域,'Android构建系统'与'IDE智能辅助'长期存在割裂——Gradle配置晦涩、Manifest合规难控、ProGuard崩溃难溯。Trae并非传统AI插件,而是基于Android工程语义建模的底层工具链,通过Builder模式实现DSL级配置推导与跨文件结构验证,结合本地化轻量LLM驱动的Chat模式完成上下文感知的即时故障翻译。其技术价值在于将隐性平台规则(如android:exported强制声明、AGP-Gradle版本契约)转化为可执行、可验证、可回滚的构建策略,广泛应用于SD

weixin_33951761的博客 400

Android中继承TextView实现文字的跑马灯效果

Android中继承TextView实现文字的跑马灯效果,详细了解请移步http://blog.csdn.net/zxc514257857/article/details/70184606

Android为textView设置setText的时候报错的讲解方案

今天小编就为大家分享一篇关于Android为textView设置setText的时候报错的讲解方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

基于大语言模型的Android崩溃自动诊断与修复系统设计与实践

在软件工程领域,自动化测试与缺陷修复是提升开发效率、保障代码质量的核心环节。其原理在于通过静态分析、动态执行等技术手段,识别代码中的潜在问题并生成修复方案。这项技术的核心价值在于将开发者从重复性的调试与测试用例编写中解放出来,显著缩短问题定位与修复周期,尤其适用于Android等移动端开发场景中框架层级复杂、依赖繁多的环境。本文聚焦于如何利用大语言模型构建智能诊断流水线,通过精心设计的提示词工程与分层修复策略,实现从崩溃日志解析、根因分析到代码补丁与单元测试生成的全流程自动化,为开发团队提供高效的AI辅助编

weixin_33985679的博客 399

Unity程序化河流生成工具Waterways:从算法到实践的全流程解析

程序化内容生成(PCG)是游戏开发与三维建模领域的关键技术,它通过算法自动创建游戏内容,显著提升开发效率。其核心原理是将设计规则转化为可执行的代码逻辑,从而生成复杂、多样且符合自然规律的环境资产。在开放世界游戏和模拟经营类项目中,程序化生成技术能够快速构建大规模、高一致性的自然场景,如山川、森林与水体网络。Unity引擎作为广泛使用的开发平台,其地形系统与着色器管线为程序化工具的集成提供了强大基础。本文聚焦于利用Waterways这一Unity工具集,深入探讨如何通过模拟重力驱动、流量累积等自然水力原理,在

weixin_33690963的博客 684

android 自定义控件继承TextView

在原生控件上进行扩展,增加新的功能 一般是在onDraw() 方法中对原生控件进行扩展 下面以一个TextView 为例,来看看如何使用扩展原生控件的方法创建新的控件 /* * 对现有控件进行扩展 * */ public class M_TextView extends TextView{ public M_TextView(Context context, Attribute

程序员 6030

Linux单独编译设备树,开发者分享 | Petalinux 工程中设备树的介绍

本文来自XILINX嵌入式产品应用工程师 Terry Ni设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。Petalinux 工程中设备树的位置当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的...

weixin_28877107的博客 2581

如何将rvt(BIM)转换为点云格式

1、为什么将BIM转换为点云格式? 如何使设计BIM与真实场景进行配准,分析在建、未建、已建构建的情况,真实场景是通过点云生产的,和点云配准需要相同的格式。 2、如何转换? 实用工具revit,转换过程如下图,这样就可以转换成三角网格形式。 3、FBX还需要进行一次转换,即转换成点云常用的类型,如bin\ply\pcd等格式。 需要软件cloudcompare.exe,软件下载地址百度云 链接:https://pan.baidu.com/s/1pflcKNc04loBnS1yKR39hw 提取码:obaf

self_Name_的博客 4489

Android Studio遇到的错误:java.lang.NullPointerException及解决方法

使用Android Studio,执行Textview.settext时遇到的误:java.lang.NullPointerException,空指针异常,如下:Caused by: java.lang.NullPointerException at imooc....

transformed的博客 1万+

4.图像sensor的特性和驱动解析

例子:sensor驱动自己提供操作曝光时间的函数和获取曝光时间的函数,然后将这个函数注册到ISP库和3A算法库,3A算法库根据外部光照强度计算出一个Sensor曝光时间的设置值,ISP库得到这个设置值,然后通过Sensor之前注册的回调函数,把这个值设置到Sensor的硬件寄存器中去,实现整个过程。是为 ISP 配置正确的输入时序。(1)修改驱动源码(sambashar\Hi3518E_SDK_V1.0.3.0\package\mpp\component\isp\sensor\ar0130)

weixin_53762042的博客 3566

java.lang.NullPointerException出现的几种原因以及解决

java.lang.NullPointerException出现的几种原因: 1、字符串变量未初始化 2、接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map = new Map(); //则不会报错了 3、当一个对象的值为空时,你没有判断为空的情况。 4、字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常 String str...

宜春 96万+

Xilinx平台SRIO介绍(二)SRIO IP核基础知识

使用SRIO IP核必须掌握的基础知识! 理解了这篇,剩下的只是代码罢了。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 4万+

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 467
上一篇: Android未调用Looper.prepare()-Can't create handler inside thread that has not called Looper.prepare()
下一篇: 仅layout使用继承TextView,报java.lang.NullPointerException
DebugLog
博客等级 码龄15年 10粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值