Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。
最近学习Fragment的使用方法,现将其最基本的使用流程记录如下,防止以后忘记。
第一步:为Fragment创建layout文件,在该文件中定义Fragment的布局。
第二步:创建一个继承自Fragment的类,复写该类的onCreateView方法,在该方法中将布局文件与该类相关联。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_article_detail, container, false);
return rootView;
}
第三步:在activity中控制Fragment。
首先加载默认Fragment:
private void setDefaultFragment()
{
fm = getSupportFragmentManager();
fragmentTransaction = fm.beginTransaction();
mArticlesFragment = new ArticlesFragment();
fragmentTransaction.add(R.id.id_content,mArticlesFragment);
fragmentTransaction.commit();
}
在需要的时候替换Fragment:
public void onEvent(ArticleDetailEvent event){
FragmentManager fm1 = getSupportFragmentManager();
FragmentTransaction transaction = fm1.beginTransaction();
mArticleDetailFragment = new ArticleDetailFragment();
transaction.replace(R.id.id_content,mArticleDetailFragment).commit();
}
几点要注意的地方:
1)activity必须继承自FragmentActivity。
2)FragmentManager 、FragmentTransaction 要import的是V4的包,别搞错了,且获取FragmentManager要使用getSupportFragmentManager方法,别用错了。还有在每次替换Fragment时,FragmentManager 、FragmentTransaction都要重新获取,在初始化时获取,以后都使用的方法不可行。