最近在工作项目里发现以前的开发人员写的一个CustomDialog,是继承了ProgressDialog并重写了layout的,并在BaseActivity中对其进行封装,其中有一句setMessage(CharSequence message)并不起作用,无论写了什么内容,展示的都是layout中默认的String,进代码中查看发现并没有覆写setMessage(CharSequence message)方法,于是覆写了该方法,并在该方法中通过findViewById获取TextView对文字进行设置,结果出现异常。
通过调试发现,在平时的开发过程中,习惯性的用法是先调用setMessage在调用show方法对ProgressDialog进行展示,因此setMessage方法是在ProgressDialog调用onCreate之前就调用的,导致了findViewById找到的TextView为空,因此可以像系统源码一样,先通过一个CharSequence的全局变量对要设置的文字进行保存,然后再在onCreate方法中将文字设置进TextView中即可。