安卓里setcontentview的问题

孤火 发布于 2015/12/23 18:21
阅读 350
收藏 0

自定义了一个继承view的类

  为什么图1中的程序会报空指针异常,图2可以正常运行。求大神指教

加载中
0
xiaolei123
xiaolei123

你这不是废话吗。你对象都没有建立  哪里来的 This  

A
Annis
回复 @孤火 : this是当前对象,onCreate();之前this 只是一颗蛋,才是一只鸡
孤火
孤火
this不是指当前类嘛?希望能说详细点,不是很明白你说的
0
pointerException
pointerException

这个问题的解释应该从java基础来讲:

一个java类的加载过程中,会初始化成员变量(具体过程不多解释),而MyView my= new MyView(this),就是属于类的成员变量,而该变量的初始化过程中,你使用了当前类作为参数传入,但是你记住,此时类还未完全加载成功,因为此时正是类的加载过程,所以你等于算是说使用了一个根本就不存在的类。因为会出现空指针的错误。建议学习android之前有扎实的java基础,会使你在学习过程中事半功倍

孤火
孤火
非常谢谢你的回答,让我收获了很多。那能不能再问一下类的加载是在什么时候完成的呢?谢谢!
0
pointerException
pointerException

我粗略的给你说一下java的初始化过程

static代码块->static成员变量->代码块->非静态成员变量->构造函数

以上过程假设不存在父类的情况下。

在android中,一个Activity类的加载是一个很复杂的过程,具体你可以去深入了解一下,一般你可以认为从onCreate开始起一个Activity就算是已经加载并初始化完成了。所以,在初始化含有当前Activity类的内容的时候,最起码要在onCreate方法中开始。

孤火
孤火
谢谢!
返回顶部
顶部