自学Android三个来月了,感觉效果不尽人意,看了大量博客技术文章,但动手敲代码实践非常不够,学过的知识也都没有整理反思,比较混乱。今日起着手记录整理些Android基础知识,将学过的东西都弄懂沉淀下来。
写的很乱,仅作学习历程记录。
BGM: 十万嬉皮
大梦一场……,学生生涯转眼就要结束,珍惜这最后的一年时光,不忘初心,追逐远方。
fragment静态使用、动态使用
静态使用:直接写在activity的布局文件中,当作普通控件使用,等同于将fragment及其视图与activity视图绑定在一起,且在Activity生命周期过程中无法切换fragment视图。
动态使用:在activity代码中添加fragment,可以在运行时控制fragment。
getFragmentManager.beginTrasaction().replace().commit(),前面加上非空判断,兼容OldVersion使用getSupportFragmentManager。
fragment回退栈管理
主要是FragmentTransaction.addToBackStack()方法的使用
fragment通信
1. Fragment.startActivity(Intent intent)启动Activity,可使用intent.putExtra(key, value)附加Extra信息,fragment可以通过getActivity.getIntent().getSerializableExtra(key)方法获取value。但是这种方法降低了fragment的封装性,因为它总是需要某个activity托管着(其中定义了extra的key)。
2. 每个fragment实例都可以附带一个Bundle(key-value)对象,如同附加extra到activity中那样使用,一个key-value对即一个argument。activity创建fragment时传入extra参数通过fragment.setArguments(Bundle args)与fragment绑定在一起,当然,fragment有个getArguments方法获取Bundle。
注意:setArguments方法必须在fragment创建以后,添加给Activity前完成。千万不要,首先调用了add,然后设置arguments。
3. fragment中定义一个接口,activity实现接口重写方法(新建fragment,setArguments(args)),这样就实现了fragment和otherfragment的通信了。
fragment动画
fragment的转场动画需要设置在transaction.add或transaction.remove之前。
1. 通过setTransition(int transit)方法为fragment指定标准的转场动画
2. 通过setCustomAnimations()方法自定义转场动画
fragment叠加
运行时配置变化很容易造成fragment叠加。如:屏幕旋转时,activity重新创建,fragment跟着重新创建(本身存在的fragment会重新启动),执行activity的onCreate时又会再次实例化一个新的fragment。解决方法:只有在savedInstanceState==null时,才进行创建Fragment实例。
fragment与ActionBar和MenuItem集成
Fragment可以添加自己的MenuItem到Activity的ActionBar或者可选菜单中。
注意要在Fragment的onCreate中调用setHasOptionsMenu(true);
fragment子类
DialogFragment:官方推荐的对话框实现。
onCreateDialog() onCreateView()
传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值,第二还会报异常,因为Activity销毁前不允许对话框未关闭。而通过DialogFragment实现的对话框则可以完全不必考虑旋转的问题。
PreferenceFragment: Android3.0之后,推荐使用PreferenceFragment来呈现Preference Screen。
重写onCreate()方法,并调用addPreferencesFromResource(R.xml.preference)方法,PreferenceActivity管理PreferenceFragment。
Fragment框架
FragmentStack:一个封装了启动模式的Fragment便捷使用库,方便构建单Activity+多Fragment轻量级框架。
Communicating with Other Fragments
Custom Animations With Fragments
Android转场动画的实现
鸿洋大神 Android Fragment 真正的完全解析
PreferenceActivity与PreferenceFragment理解