吐槽一下,6000行的主界面代码,宝宝心里苦TT
接手别人写好的Android项目,先啥都不动,运行一下,可以正常运行,通过git保存为第一个版本.不能正常运行,呵呵,找原因找支持,要是啥都没有,只能为你默哀三分钟了.
确定了第一版本,就可以在上面小小的修改,然后运行查看效果,做到心里有数,这就是维护的思路.再说说手段,Android无非是xml布局文件和java代码,一般修改要么是改ui要么是改某些控件的交互逻辑,前提都是你要找到控件的操作代码,我的建议是:
第一个.根据控件中的字符串
在Eclipses中按Ctrl+H全局查找字符串
选择File Search,输入字符串,点击Search按钮就行了,整个项目中只要含有这个字符串的地方都能找出来,然后顺藤摸瓜.
第二个,根据Log的打印信息,
你点击要修改的控件,如果出现Log打印信息,接下来和上面一样,顺藤摸瓜,但是这个一般找到就是这地方了.
主要的手段就是上面两种吧,还不行就只能联系上下文?找中心思想?弄清作者意图?
好像高考的阅读理解.
2018年5月15日 14:27:31 续
昨天本来以为几个功能都改好了,今天一测试发现有个bug,然后从早上改到现在了.
问题是在出现新页面时(这里用出现而不是创建是因为我维护的这个项目是把所有页面全放在一个Activity中的,页面的切换通过控件的visible属性来控制),新页面中的一个mEditText需要显示为消失页面的一个信息,本来应该是很简单的,一句mEditText.setText(msg);完事的,但是莫名奇妙会报空指针异常,而我用Toast了解到mEditText是不为null的,并且可以用Toast看mEditText.getText的值.然后我怀疑是msg不对,我直接写个简单的字符串进去"zdd",空指针异常还是存在,但是莫名其妙的这个"zdd"的值居然还是设置进去了,真的懵逼了,本来这个代码又多,结构又复杂,不敢乱改代码,想了很多办法还是解决不了这个问题.
现在写这个博客肯定是解决了嘛,通过try{}catch()把mEditText.setText(msg);这句代码给圈起来,OK,程序逻辑正常了,至于底层还有没有空指针异常?who care>?