PuzzleGame-问题笔记(第一篇+感悟)

来源:互联网 发布:暖暖环游世界人工智能 编辑:程序博客网 时间:2024/05/16 07:46

读android群英传感悟

在经过大半个月的时间,终于完成了《Android群英传》的阅读。我是在看完郭大神的《第一行代码》后直接开始看的Android群英传这本书的,刚开始感觉风格上和郭大神的书有很大的不同,第一例程不再有那么详细的解说和完整的代码了,书上只会将一些关键的代码贴出来,而且只对该部分进行一定的解说,很多地方都需要读者在有了一定基础以后想一想才知道如何自己去实现例程。其次本书的大部分内容都是在介绍UI,动画,以及android5.0的一些新特性上面,关于广播,内容提供器,服务等组件的几乎没有讲解。不过在UI方面的介绍确实十分的详尽,让我自己对于android的界面设计有了新的认识,在没看这本书的时候我还真没感觉到android的UI能够如此的灵活。后续我会开始读《android开发艺术探索》一书,这本书我还没有开始,只浏览了一下目录和大体内容。感觉这本书则主要讲解一些android的内在机制,这正是群英转所欠缺的,不过试读的时候发现,这本书很多都涉及到Android的源码分析,这对于我这个java基础不好的来说还真是头疼,不过慢慢磨应该还是可以接受的.
学习Android,我是为了再毕业之后自己能够有一份好的工作,处在大二的暑假,马上就要进入大三的我,也开始感受到了来自工作的压力.但是!!但是!!!再经过这段时间的学习之后我发现,这样的想法虽然正确,却无法给我带来快乐.直到我看到这句话”程序员及建筑师”我才知道,不管是学习什么,你都要去感受它所带来的美,却通过自己的创造实现一些价值!这才是最重要的.好了不多说了,接下来我将把我这段时间开发群英传最后的一个实例项目拼图游戏中发现的一些问题进行记载,以免自己以后再犯同样的错误,也给其他再学习的朋友一些参考,以免再同样的问题话费过多的时间.

问题一:

最近遇到最多的问题就是,声明了对象后没有进行初始化,或者试其他问题导致返回空对像,使得Activity无法启动.
该问题再我使用的PopupView中出现过,我在popupWindow中设置点击监听事件时发生错误

private void popupShow(){        View convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.popup_item , null);        mPopupWindow = new PopupWindow(convertView, LinearLayoutCompat.LayoutParams.WRAP_CONTENT , LinearLayoutCompat.LayoutParams.WRAP_CONTENT , true);        mPopupWindow.setContentView(convertView);        popup_item1 = (TextView) findViewById(R.id.popup_item1);        popup_item2 = (TextView) findViewById(R.id.popup_item2);        popup_item3 = (TextView) findViewById(R.id.popup_item3);        popup_item1.setOnClickListener(this);        popup_item2.setOnClickListener(this);        popup_item3.setOnClickListener(this);        View rootView = LayoutInflater.from(MainActivity.this).inflate(R.layout.main_start_layout , null);        mPopupWindow.showAtLocation(rootView , Gravity.BOTTOM , 0 , 0);    }

这是当时的错误代码,报错显示TextView.是一个空对象,无法设置点击监听事件.之前也出现过类似的错误,是我的List数组申明了却没有初始化导致的,但是这三个TextView我通过findViewById初始化了,那么问题在哪里呢?
经过调试后发现,findViewById再获取了控件后返回的试null,因为这个时后已经不是再MainActivity_layout中找,但是这个控件定义再R.layout.popup_item这个布局中,所以无法找到返回空类型,需要将代码改为:

popup_item1 = (TextView) convertView.findViewById(R.id.popup_item1);popup_item2 = (TextView) convertView.findViewById(R.id.popup_item2);popup_item3 = (TextView) convertView.findViewById(R.id.popup_item3);

这样就没问题了~问题解决~

后续问题还会继续补充,我没有完全按照书上的内容进行开发,更改了一些部分:主要是将主界面选择图片的GridView换成了RecyclerView的瀑布流进行图片的预览,但是目前问题是,RecycleView的上下滑动卡顿特别的明显,再真机上运行了都十分的卡,目前还没有解决.我会继续加油~嘿嘿~

源码:https://github.com/Haozhuxianer/puzzlegame.git

0 0
原创粉丝点击