Fragment的使用

自学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理解

你可能感兴趣的:(Fragment的使用)