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

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中使用:
 

nokia = (AutoScrollTextView) findViewById(R.id.nokia);

Activity对应的layout :

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

当Activity中取消使用AutoScrollTextView,而对应layout 未取消对应配置时,
LogCat 报错信息:

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

 
发生错误原因分析:

canvas.drawText(text, length, width, paint);

此处的paint为null,报错。

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

 paint = getPaint();

 

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

相关推荐

Android MVVM实战:LiveData与Data Binding原理与避坑指南

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

weixin_34008805的博客 419

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

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

helpbs 200

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

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

weixin_36250534的博客 371

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

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

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

dechen6073的博客 383

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

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

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

android 自定义控件继承TextView

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

程序员 6030

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

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

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

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

weixin_33951761的博客 400

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

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

手把手教你设计STM32的JTAG电路:从原理图到PCB布局(含JLINK连接详解)

本文详细介绍了STM32的JTAG电路设计全流程,从核心原理、接口规范到PCB布局布线技巧,特别包含JLINK调试器的连接与配置方法。通过信号滤波、上拉配置和防反接保护等关键设计要点,帮助开发者构建稳定可靠的JTAG调试环境,提升嵌入式开发效率。

weixin_29159441的博客 388

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

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

weixin_33985679的博客 399

Mybatis Provider注解实现批量插入

需求 借助mybatis 的provider实现一个比较通用的,批量插入数据接口。 Mapper接口 第一参数为需要批量插入的数据,第二个参数为对应实体类的class public interface BaseDao<T> { @InsertProvider(type = BaseProvider.class, method = "batchInsert") int batchInsert(@Param("lists") List<T&gt

小楼夜听雨的博客 2417

Android为textView设置setText的时候报错

一、我的代码如下:就是我textView设置值if (list != null) { for (Student stu : list) { //如果一下子赋值的话是不正确的 tv_name.setText(stu.getName()); tv_sex.setText(stu.getSex()); tv_age.setText(s

徐刘根的博客 9312

一文帮你彻底搞懂ARM Debug Interface之SWD(转)

ARM的文档写的已经很好了,但是关于上电以后的第一时间应该怎么操作,依然写的不够清晰,导致我第一次用的时候还是费了一些周折。今天做一个详细的梳理,希望能够帮助到更多的朋友。BTW, ARM_Cortex-M0/3 DesignStart系列会持续更新,只是中间可能会穿插其他知识点。SWD是Serial Wire Debug的简称,翻译成中文是”串行线调试”。

2302_79847220的博客 6859

Prometheus+Grafana+alertmanager+PrometheusAlert监控告警 实现飞书告警

以上 是以grafana做的邮件告警,但是感觉邮件很少人看。下面是以webhook 可以接入。启动alertmanager (设置 开机在启动)下载prometheusalter 配置文件。这里的告警是基于grafana上搭建的。我们启动PrometheusAlert。写完之后进行重启Prometheus。prometheus 的告警规则。测试 基于我们生产环境做的文档。然后在grafana上导模板。上导入模板就可以 直接引用。访问 grafana页面。重启一下grafana。

墨痕诉清风的博客 854

Android之TextView

TextView常见属性 lineSpacingMultiplier:设置字符行距,取值范围:浮点数,如果值大于1.0表示增加行间距,如果值小于1.0表示减少行间距,等于1.0时表示无变化。 lineSpacingExtra:设置字符行距,取值范围:正数、负数和0,正数表示增加相应的大小,负数表示减少相应的大小,0表示无变化。 快捷键 加粗 Ctrl + B 斜体 ...

继承接口的博客 761

计算机专业保研攻略(一):个人定位与院校推荐(必看干货)

写在最前 又是一年保研季,作为过来人,我深知保研就是一场信息战。在保研过程中,需要注意的信息太多了,最初我也因为经验不足,走了不少弯路。我写下这篇博客,希望能帮助更多有需要的同学。 怎样做好保研信息分析 我想举几个发生在我身边真实的例子: A同学推免排名不如B同学,但A保研去向比B同学好很多; C同学在年级里成绩并不算突出,但他拿到了最好的offer; D、E同学纷纷圆梦北大、浙大等名校,但是他们的成绩似乎并不突出; F同学取得了目标院校夏令营offer,但没有拿到本校推免资格; G同学认为自己拿不到推免

乔卿的博客 8388

android 自定义布局继承一个系统的布局会报错

是个小菜鸟,进行android的开发,刚起步的状态,所以写代码的时候,出现了这样子的问题。 自定义了一个布局,然后出现了编译可以通过,但是在运行的时候出现了问题。 LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = i

rfjian123的专栏 802

支付域——“清算、结算、清结算”

本文深入探讨了支付系统中的清算和结算流程,包括核心流程、模块设计及特殊场景处理。文章详细阐述了交易收单、资金冻结、清分规则、清算批处理、结算出账等关键步骤,并讨论了交易失败、数据不一致、退款、汇率波动等异常情况的处理方法。

庄小焱 2558

真正的工业级环形缓冲区(Circular Buffer)完整实现细节

永远不要永远不要ToArray()或AddRange()永远返回或两段Span永远用_head_tail% Capacity实现环形照着上面这套代码改,你的系统将彻底告别内存爆炸,从“实验室玩具”变成“产线战神”!需要我给你一个支持两段绘制的完整实现吗?

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 127
上一篇: layout使用继承TextView,Activity未使用,报java.lang.NullPointerException一例
下一篇: Android 图片大小超过预算的VM:java.lang.OutOfMemoryError: bitmap size exceeds VM budget
DebugLog
博客等级 码龄15年 10粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值