Android开发中,经常会自定义View,那么就会使用构造方法,比如自定义MyView,继承View,会要求实现构造方法:

    public MyView(Context context) {
super(context);
     Log.v("MyView","MyView(Context context)");
} public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
     Log.v("MyView","MyView(Context context, AttributeSet attrs)");
} public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

那么,在真正使用的过程中,究竟是怎么调用呢?

在MainActivity的OnCreate中直接添加

MyView myView = new MyView(this);

打出的日志:

06-14 13:19:53.867  21160-21160/? V/MyView﹕ MyView(Context context)

这说明,第一个构造方法被调用

当我们在布局(XML)中添加

 <li.deng.com.test.view.MyView
android:layout_width="match_parent"
android:layout_height="wrap_content" />

注释掉 //MyView myView = new MyView(this);

打印Log:

06-14 13:25:07.196  22697-22697/? V/MyView﹕ MyView(Context context, AttributeSet attrs)

之前,每次看别人的代码都是这样子的:

 private Context mContext;
public MyView(Context context) {
super(context);
Log.v("MyView","MyView(Context context)");
this.mContext = context;
} public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.v("MyView","MyView(Context context, AttributeSet attrs)");
this.mContext = context;
}

之前,还不是特别明白,为什么要写这么多构造方法,现在明白了构造方法的用法了,这是因为在开发的过程中,自己之定义了

 public MyView(Context context) {
super(context);
Log.v("MyView","MyView(Context context)");
this.mContext = context;
}
而在使用的过程中是在布局文件中定义View的时候,从而根本取不到上下文对象,结果就是空指针,后来查了一下构造方法相关的知识,必须要实现第二个构造方法
 public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.v("MyView","MyView(Context context, AttributeSet attrs)");
this.mContext = context;
} 参考文章:http://825288003.iteye.com/blog/1595213
												

Android自定义View 构造方法 遇到的一些问题的更多相关文章

  1. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

  2. Android自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  3. Android自定义View

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  4. Android自定义View之ProgressBar出场记

    关于自定义View,我们前面已经有三篇文章在介绍了,如果筒子们还没阅读,建议先看一下,分别是android自定义View之钟表诞生记.android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检 ...

  5. android自定义View之NotePad出鞘记

    现在我们的手机上基本都会有一个记事本,用起来倒也还算方便,记事本这种东东,如果我想要自己实现,该怎么做呢?今天我们就通过自定义View的方式来自定义一个记事本.OK,废话不多说,先来看看效果图. 整个 ...

  6. android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索

    我们的手机通讯录一般都有这样的效果,如下图: OK,这种效果大家都见得多了,基本上所有的android手机通讯录都有这样的效果.那我们今天就来看看这个效果该怎么实现. 一.概述 1.页面功能分析 整体 ...

  7. Android 自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  8. Android 自定义View (一)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  9. Android 自定义View(button)

    很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章.先总结下自定义View的步骤 ...

随机推荐

  1. Android之路-------Activity的详解

    前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...

  2. 如何唯一确定一台iOS设备

    如果你的iOS应用需要针对设备做特定的操作,或者需要硬件的信息来进行判定等等的,你就需要对iOS设备进行唯一性的判定. 苹果设备有个先天的东西符合这个需求,UDID,这个东东用iTunes就可以看到, ...

  3. svn解决冲突 Aborting commit: 'XXXXXXXX'remains in conflict错误

    如果你遇到冲突,三件事你可以选择: “手动”合并冲突文本(检查和修改文件中的冲突标志). 用某一个临时文件覆盖你的工作文件. 运行svn revert <filename>来放弃所有的修改 ...

  4. 图像的影像地图超链接,<map>标签浅谈

    在HTML中还可以把图片划分成多个热点区域,每一个热点域链接到不同网页的资源.这种效果的实质是把一幅图片划分为不同的热点区域,再让不同的区域进行超链接.这就是影像地图.要完成地图区域超链接要用到三种标 ...

  5. 高效JQuery编码

    缓存变量 DOM遍历是昂贵的,所以尽量将会重用的元素缓存. // 糟糕   h = $('#element').height(); $('#element').css('height',h-20); ...

  6. Java 编程的动态性,第 5 部分: 动态转换类--转载

    在第 4 部分“ 用 Javassist 进行类转换”中,您学习了如何使用 Javassist 框架来转换编译器生成的 Java 类文件,同时写回修改过的类文件.这种类文件转换步骤对于做出持久变更是很 ...

  7. js window.open()弹出窗口参数说明及居中设置

    window.open()可以弹出一个新的窗口,并且通过参数控制窗口的各项属性. 最基本的弹出窗口代码 window.open('httP://codeo.cn/'); window.open()各参 ...

  8. 【移动开发】WIFI热点通信(一)

    之前调查过Android中WIFI模块的使用,也写过两篇学习总结的文章(http://smallwoniu.blog.51cto.com/3911954/1334951),后来发现DEMO里面还是有许 ...

  9. python基础-软件目录开发规范

    为什么要设计好目录结构? "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 一类同学认为,这种个人风 ...

  10. c# 字符串编码问题

    一. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...