CriminalIntent项目总结(一)

一、应用功能及前期需求

功能:该应用可以详细记录各种办公室陋习,如随手将脏盘子丢在休息室水池里,或者自己打印完文件就走,全然不顾公共打印机里已缺纸。

需求:引入fragment,fragment是一种控制器对象,activity可委派它执行任务,通常就是管理用户界面,受管的用户界面可以是一整屛的一部分。fragment本身没有屏幕上显示视图能力,需要将它的视图放置在activity的视图层级结构中,fragment视图才能显示在屏幕上。


二、项目开发情况及重要代码展示

1、创建新项目

重要代码及过程

CriminalIntent项目总结(一)_第1张图片
Crime类的新增代码及已生成的getter和setter方法(Crime.java)

UUID是Android框架里的Java工具类,在构造方法里,调用ndomUUID()产生一个随机唯一ID值

fragment的生命周期:fragment生命周期与activity生命周期的一个关键区别就在于,fragment的生命周期方法由托管activity而不是操作系统调用

activity托管UI fragment有如下两种方式:

(1) 在activity布局中添加fragment(简单但不灵活)

(2)在activity代码中添加fragment(唯一可以动态控制fragment的方式)

CriminalIntent项目总结(一)_第2张图片
添加字符串资源(res/values/strings.xml)



CriminalIntent项目总结(一)_第3张图片
fragment视图的布局文件(fragment_crime.xml)
CriminalIntent项目总结(一)_第4张图片
fragment视图的布局文件(fragment_crime.xml)


CriminalIntent项目总结(一)_第5张图片
预览CrimeFragment布局


CriminalIntent项目总结(一)_第6张图片
覆盖onCreateView(...)方法(CrimeFragment.java)

fragment的视图是直接通过调用LayoutInflater.inflate(...)方法并传入布局的资源ID生成。第二个参数是视图的父视图,第三个参数告诉布局生成是否将生成的视图添加给父视图

CriminalIntent项目总结(一)_第7张图片
生成并使用EditText组件(CrimeFragment.java)

在onTextChanged(...)方法中,调用charSequence(代表用户输入)的toString()方法


CriminalIntent项目总结(一)_第8张图片
监听CheckBox的变化(CrimeFragment.java)

几乎每次新建activity都需要这样一段代码,为避免重复,将其封装成抽象类,改名为SingleFragmentActivity,设置超类为AppCompatActivity

FragmentManager类具体管理:

(1) fragment对列;

(2)fragment事务回退栈;


CriminalIntent项目总结(一)_第9张图片
CrimeActivity托管的CrimeFragment视图

2、使用RecyclerView显示列表


CriminalIntent项目总结(一)_第10张图片
crime列表

重要代码及过程


CriminalIntent项目总结(一)_第11张图片
创建单例及可容纳Crime对象的List(CrimeLab.java)


CriminalIntent项目总结(一)_第12张图片
是生成100个crime


CriminalIntent项目总结(一)_第13张图片
声明CrimeListActivity为launcher activity(AndroidManifest.xml)


使用RecyclerView


CriminalIntent项目总结(一)_第14张图片
添加Recycle让View依赖库


CriminalIntent项目总结(一)_第15张图片
在布局文件中添加RecyclerView视图(fragment_crime_list.xml)


CriminalIntent项目总结(一)_第16张图片
为CrimeListFragment配置试图(CrimeListFragment.java)



CriminalIntent项目总结(一)_第17张图片
武装CrimeAdapter(CrimeListFragment.java)


CriminalIntent项目总结(一)_第18张图片
设置Adapter(CrimeListFragment..java)

绑定列表项


CriminalIntent项目总结(一)_第19张图片
实现bind(Crime)方法(CrimeLsitFragment.java)



CriminalIntent项目总结(一)_第20张图片
调用bind(Crime)方法(CrimeLsitFragment.java)




CriminalIntent项目总结(一)_第21张图片
显示有序号的列表

3、使用fragment argument


CriminalIntent项目总结(一)_第22张图片
启动CrimeActivity(CrimeListFragment.java)



CriminalIntent项目总结(一)_第23张图片
空白的CrimeFragment


CriminalIntent项目总结(一)_第24张图片
创建newIntent方法(CrimeActivity.java)
CriminalIntent项目总结(一)_第25张图片
Crime#4列表项的明细内容



CriminalIntent项目总结(一)_第26张图片
编写newInstance(UUID)方法(CrimeFragment.java)


CriminalIntent项目总结(一)_第27张图片
使用newInstance(UUID)方法(CrimeActivity.java)


4、使用ViewPager


CriminalIntent项目总结(一)_第28张图片
创建ViewPager(CrimePagerActivity.java)



CriminalIntent项目总结(一)_第29张图片
设置pager adapter(CrimePagerActivity.java)



CriminalIntent项目总结(一)_第30张图片
创建newIntent方法(CrimePagerActivity.java)



CriminalIntent项目总结(一)_第31张图片
设置厨师分页显示项(CrimePageActivity.java)


5、总结

因为这次7到11章虽然代码都能实现,也都能运行出来,但是总体感觉还是比较乱的,所以博客写的也有点无厘头的感觉,希望下次可以写的更好吧。

你可能感兴趣的:(CriminalIntent项目总结(一))