Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java.lang.NullPointerException、field ‘’ is never assigned

java.lang.NullPointerException、field ‘’ is never assigned

作者头像
凌川江雪
发布于 2018-09-13 05:16:29
发布于 2018-09-13 05:16:29
58200
代码可运行
举报
文章被收录于专栏:李蔚蓬的专栏李蔚蓬的专栏
运行总次数:0
代码可运行

1.刚刚写好一个Demo:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.canvastest;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by 700 on 2018/7/30.
 */

public class DrawRectView extends View{

    //1/4 定义变量
    private Paint mRectPaintStroke;
    private Paint mRectPaintFill;
    private int[] rect1 = new int[]{10, 10 , 110, 110};
    private int[] rect2 = new int[]{10, 310 , 110, 410};

    //2/4 三个构造函数
    public DrawRectView(Context context, AttributeSet attrs,
                              int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public DrawRectView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DrawRectView(Context context) {
        super(context);
    }

    //3/4  初始化画笔
    private void initView(){
        mRectPaintFill.setColor(getResources().getColor(
                android.R.color.holo_blue_bright));
        mRectPaintFill.setStyle(Paint.Style.FILL);

        mRectPaintStroke.setColor(getResources().getColor(
                android.R.color.holo_blue_bright));
        mRectPaintStroke.setStyle(Paint.Style.STROKE);
    }

    //4/4  开画
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawRect(rect1[0],rect1[1],rect1[2],rect1[3],mRectPaintStroke);

        canvas.drawRect(rect2[0],rect2[1],rect2[2],rect2[3],mRectPaintFill);
    }
}

2.一运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
07-29 14:34:45.660 4468-4468/com.example.canvastest E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: com.example.canvastest, PID: 4468
                                                                      java.lang.NullPointerException: Attempt to read from field 'long android.graphics.Paint.mNativePaint' on a null object reference
                                                                          at android.view.GLES20Canvas.drawRect(GLES20Canvas.java:843)
                                                                          at com.example.canvastest.DrawRectView.onDraw(DrawRectView.java:50)
                                                                          at android.view.View.draw(View.java:15114)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:14048)
                                                                          at android.view.View.getDisplayList(View.java:14071)
                                                                          at android.view.View.draw(View.java:14838)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:14043)
                                                                          at android.view.View.getDisplayList(View.java:14071)
                                                                          at android.view.View.draw(View.java:14838)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:14043)
                                                                          at android.view.View.getDisplayList(View.java:14071)
                                                                          at android.view.View.draw(View.java:14838)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:14043)
                                                                          at android.view.View.getDisplayList(View.java:14071)
                                                                          at android.view.View.draw(View.java:14838)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                                                                          at android.view.View.draw(View.java:15117)
                                                                          at android.widget.FrameLayout.draw(FrameLayout.java:592)
                                                                          at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2595)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:14048)
                                                                          at android.view.View.getDisplayList(View.java:14071)
                                                                          at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:266)
                                                                          at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:272)
                                                                          at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:311)
                                                                          at android.view.ViewRootImpl.draw(ViewRootImpl.java:2492)
                                                                          at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2337)
                                                                          at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1968)
                                                                          at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
                                                                          at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
                                                                          at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                                                                          at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                                                                          at android.view.Choreographer.doFrame(Choreographer.java:550)
                                                                          at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                                                                          at android.os.Handler.handleCallback(Handler.java:739)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                          at android.os.Looper.loop(Looper.java:135)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5221)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:372)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
07-29 14:34:47.589 4468-4468/com.example.canvastest I/Process: Sending signal. PID: 4468 SIG: 9

3.呵呵哒,看了一下,发现就是写好了忘记调用 initView()了 ←_←。。。 好的加在onDraw()里面,再来。。。。

有没有搞错啊。。。 又看了一下。。。好的。。。

几个意思捏,就是缩声明了变量之后,没给它new一下啊 ←_←。。。 好的,在onDraw里面给你new了,可以了吧。。。可以了

真是饶人的小妖精,新车上路,注意系好安全带

那个,就是在学绘图机制,过阵子写个简书总结一下昂

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!
Jaylin 腾讯手机管家团队,高级研发工程师,5年以上Android开发经验,擅长终端架构设计、性能和稳定性优化。 前言 Android的严重碎片化,通常会给开发人员造成很大的苦恼!经过测试验证后的版本,一旦发布出去,会收到很多奇葩的反馈,在Bugly崩溃分析平台上也总会出现很多意想不到的问题。 有的可以很容易从堆栈信息中定位到出现问题的代码,比较容易解决。但是也会经常出现一些只有系统代码堆栈的问题,这类问题定位往往都比较困难。对于这些疑难杂症,有些问题解决的方法是比较通用的。这里我整理了一些跟进的思
腾讯Bugly
2018/03/22
1.2K0
全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!
Android解决java.lang.NoSuchMethodError: No virtual method into报错问题过程
最近项目中需要接入容联七陌客服系统,接入过程中将容联的Demo作为module添加到项目中,然后添加依赖,过程貌似很顺利,编译也没有问题,可是进入客服界面时,却报了下面的错误:
SoullessCoder
2019/08/07
10.2K0
Android解决java.lang.NoSuchMethodError: No virtual method into报错问题过程
Android旁门左道之动态替换系统View类
本文讲述了一个开发者在Android开发中遇到的崩溃问题,通过抓取日志、定位源码、添加断点、重写类、使用反射、设置日志级别、分析二进制文件、运行时修改变量、以及使用自定义视图等方式,最终找到了问题的原因,并给出了具体的解决方法。该开发者通过这些方法,提高了程序的稳定性,并优化了代码。
MelonTeam
2018/01/04
1.8K0
Android旁门左道之动态替换系统View类
虾扯蛋:Android View动画 Animation不完全解析
本文结合一些周知的概念和源码片段,对View动画的工作原理进行挖掘和分析。以下不是对源码一丝不苟的分析过程,只是以搞清楚Animation的执行过程、如何被周期性调用为目标粗略分析下相关方法的执行细节
用户1172465
2018/01/08
1.6K0
理解Android硬件加速原理的小白文
硬件加速,直观上说就是依赖GPU实现图形绘制加速,软硬件加速的区别主要是图形的绘制究竟是GPU来处理还是CPU,如果是GPU,就认为是硬件加速绘制,反之,软件绘制。在Android中也是如此,不过相对于普通的软件绘制,硬件加速还做了其他方面优化,不仅仅限定在绘制方面,绘制之前,在如何构建绘制区域上,硬件加速也做出了很大优化,因此硬件加速特性可以从下面两部分来分析:
看书的小蜗牛
2018/06/29
2K0
理解Android硬件加速原理的小白文
hwui介绍与分析
hwui全称**HardwareAcceleratedRenderingEngineforUI,**hwui是一个基于GPU加速的2D图形引擎。HWUI的目标是提供高效、稳定、高质量的2D图形渲染能力,为Android系统的UI体验提供技术支持。
用户1907613
2023/09/17
2.3K0
hwui介绍与分析
Android调试bug-2015-9-24
09-24 12:56:16.471: E/AndroidRuntime(10696): FATAL EXCEPTION: main 09-24 12:56:16.471: E/AndroidRuntime(10696): Process: com.example.nongmin, PID: 10696 09-24 12:56:16.471: E/AndroidRuntime(10696): android.util.Androi
wust小吴
2019/07/08
4030
Unable to add window --token is not valid
Build: ***:4.0.4/IMM76D/1348165925:eng/test-keys
再见孙悟空_
2023/02/10
4720
【错误记录】Android Studio 中 DataBinding 布局报错 ( Resources$NotFoundException: String resource ID #0xd )
特别注意 , 其中的下面的组件 , 直接将 age 字段作为值 , 设置到了 text 中 ,
韩曙亮
2023/03/26
5670
An error has occurred while drawing:java.lang.IllegalStateException: The display list is not valid.
我再编写一个RecyclerView的页面时,数据加载完成之后,点击进入Activity时,很卡并且无法上下滑动,查看日志发现如上信息,根据日志 HardwareRenderer….大致可以猜测出是硬件加速造成的,我使用的是模拟器,可能是对硬件加速的支持不好..
小小工匠
2021/08/16
5250
[异常特工]android常见bug跟踪
前言 对app的线上bug的收集(友盟、云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的。这使得对bug的解决无从下手,根据经验,内存不足OOM,Dialog关闭,ListVie
用户1172465
2018/01/05
1K0
android学习各种bug(5)
09-26 01:20:33.336: E/AndroidRuntime(1854): FATAL EXCEPTION: main 09-26 01:20:33.336: E/AndroidRuntime(1854): Process: com.example.nongmin, PID: 1854 09-26 01:20:33.336: E/AndroidRuntime(1854): java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.initView(User_F.java:77) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.jarvis.mytaobao.user.User_F.onCreateView(User_F.java:67) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.handleCallback(Handler.java:733) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Handler.dispatchMessage(Handler.java:95) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.os.Looper.loop(Looper.java:136) 09-26 01:20:33.336: E/AndroidRuntime(1854): at android.app.ActivityThread.main(ActivityThread.java:5017) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invokeNative(Native Method) 09-26 01:20:33.336: E/AndroidRuntime(1854): at java.lang.reflect.Method.invoke(Method.java:515) 09-26 01:20:33.336: E/AndroidRuntime(1854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-26 01:20:33.336: E/AndroidRuntime(185
wust小吴
2019/07/08
5220
Android开发中StackOverflowError
Android开发中StackOverflowError错误实例分析 一、概述  我在一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。这个错误出现的比较奇怪,在我做技术调研的时候,这个界面是放在单独的一个程序中展示的,工作很正常,没有出现这个严重错误,当将其嵌入到一个ActivityGroup后才报错。        android SDK中对该错误的出现的场景描述为:
xiangzhihong
2018/01/30
9470
View的绘制-draw流程详解
根据 measure 测量出的宽高,layout 布局的位置,渲染整个 View 树,将界面呈现出来。
用户5546570
2019/06/06
1.4K0
View的绘制-draw流程详解
面试官:如何监测应用的 FPS ?
即使你不知道 FPS,但你一定听说过这么一句话,在 Android 中,每一帧的绘制时间不要超过 16.67ms。那么,这个 16.67ms 是怎么来的呢?就是由 FPS 决定的。
音视频开发进阶
2020/11/10
1.5K0
面试官:如何监测应用的 FPS ?
【Android 应用开发】 Fragment 详解
转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191
韩曙亮
2023/03/27
1.6K0
【Android 应用开发】 Fragment 详解
面试官:如何监测应用的 FPS ?
即使你不知道 FPS,但你一定听说过这么一句话,在 Android 中,每一帧的绘制时间不要超过 16.67ms。那么,这个 16.67ms 是怎么来的呢?就是由 FPS 决定的。
路遥TM
2021/08/31
1.5K0
高级 UI 成长之路 (三) 理解 View 工作原理并带你入自定义 View 门
该篇分为上下结构,上部分主要讲解 View 的工作原理,下部分主要以案例的形式讲解自定义 View。
做个快乐的码农
2021/11/16
8400
高级 UI 成长之路 (三) 理解 View 工作原理并带你入自定义 View 门
【错误记录】Android 应用执行报错 ( java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ )
Android 应用中 , 引入了 ijkplayer , 其中涉及到需要加载 libijkffmpeg.so 动态库 , 在 64 位手机中 , 报如下错误 ;
韩曙亮
2023/03/30
1.1K0
【错误记录】Android 应用执行报错 ( java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ )
从 Android 开发到读懂源码 第08期:Android应用层视图渲染机制
Android应用层是不涉及 SurfaceFlinger,FrameBuffer 之类的底层框架,常用刷新视图都是在 View 的 draw 相关方法中进行标准绘制 api 操作,然后通过 View.invalidate 或者 View.requestLayout 通知系统进行视图显示的刷新。在此不讨论 draw 相关的 api , draw 的所有绘制方法都是直接jni调用对应 skia 的绘制,具体的自己查看 skia 引擎相关的资料。
数据库交流
2022/04/25
6420
从 Android 开发到读懂源码 第08期:Android应用层视图渲染机制
推荐阅读
相关推荐
全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验