Activity还是getApplicationContext
显示dialog必须使用Activity
使用adapter中初始化convertView最好使用Activity
显示地图时必须使用ApplicationContext
其他绝大的情况下两者都可以
选择ApplicationContext肯定没有问题
选择Activity可能会导致Activity对象不能被回收,导致内存泄漏
在视图对象中使用Activity作为context一般没问题,是因为视图对象在Activity中加载的,生命周期往往比activity短或者差不多
Fragment
1.理解
是从Android3.0开始新增的概念, 意为碎片。为了更好的运用越来越大的屏幕空间而生,目前已经成为流行的开发方式。
Fragment是一种可以嵌入在Activity当中的UI片段
用来组建Activity界面的局部模块, 也可以说一个Actiivty界面可以由多个Fragment组成
其行为与Activity很相似, 有自己对应的布局(包含具体的View), 它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除
一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity的影响
本质上会产生一个FrameLayout,它加载的布局为其子布局
2.关于android-support-v4.jar兼容包
它是什么?
google 提供的能兼容到api4(1.6)的兼容jar包
Android3.0(11)的SDK中添加了不少新的更强大的API供开发者使用
v4包中包含了android3.0推出的一些新的API
为什么要用它?
如果项目中直接使用了最新的API, 不能安装到低版本的手机中的
而使用V4兼容包开发就可以安装到低版本(1.6)的手机
重要API
Fragment
ViewPager
FragmentStatePagerAdatper
FragmentPagerAdapter
注意
在使用Fragment及其相关API时, 要导V4中定义的
如何关联libs下jar包的源码
3.相关API
Fragment
View onCreateView()
onActivityCreated()
当Activity创建好
getActivity()
宿主
setArguments(), getArgument()
ListFragment
setListAdapter(adapter)
onListItemClick()
getFragmentManager()
FragmentActivity
getSupportFragmentManager()
FragmentManager
beginTransaction()
FragmentTransaction
add(), replace(), remove()
show() <-->hide()
commit()
addToBackStack()
4.使用
Fragment的静态加载
1. 定义Fragment的子类, 并在onCreateView()中加载一个布局文件
2. 在布局文件中通过<fragment>指定自定义Fragment
3. 我们的Activity必须继承于FragmentActivity
Fragment的动态加载
1. 定义Fragment的子类, 并在onCreateView()中加载一个布局文件
2. 我们的Activity必须继承于FragmentActivity
3. 在代码中, 动态创建Fragment对象, 并添加到指定的ViewGroup中
add
replace
remove
hide
show
Fragment的生命周期
生命周期状态
运行状态
可见,可操作
暂停状态
可见,但不可操作
停止状态
存在,但不可见
死亡状态
对象不存在
生命周期方法
onAttach()
当fragment与Activity建立关联时调用
onCreate()
onCreateView()
为fragment创建视图(加载布局)时调用
onActivityCreated()
与fragment相关联的Activity已经创建完毕时候调用
onStart()
onResume()
onPause()
onStop()
onDestroyView()
当与fragment相关联的视图被移除的时候调用
onDestroy()
onDetach()
当fragment与Activity解除关联的时候调用
测试用例
添加Fragment对象显示
home到桌面
回到应用
replace为其它Fragment
返回到本身的Fragment
退出应用
5.应用Fragment
应用Fragment的两种加载方式
使用ListFragment显示列表
setListAdapter()
Fragment携带数据
小技术:如何让选择项变色
android:background="?android:attr/activatedBackgroundIndicator"
设置ListView为单选模式
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE)
设置默认选中第一个
getListView().setItemChecked(0, true)