推荐学习启舰的系列Fragment教程,堪称经典。
Fragment详解之一——概述
Fragment详解之二——基本使用方法
Fragment详解之三——管理Fragment(1)
Fragment详解之四——管理Fragment(2)
Fragment详解之五——Fragment间参数传递
Fragment详解之六——如何监听fragment中的回退事件与怎样保存fragment状态
好了,下面是我在项目中使用的心得,不定时会添加使用的心得。
哪些场景容易使用到Fragment呢,在我想法里,引导页果断是最适合ViewPager+Fragment使用的地方。一个Activity就可以管理好几个Fragment来实现引导页,还带滑动效果,完美。还有现在用得比较多的地方就是整个项目就是用tab+ViewPager+Fragment来展现的,会使整个页面流畅顺滑,德芙巧克力么么哒。
今天项目里让做一个带功能的引导页,也就是不能滑动,需要点击上一步下一步来控制页面的跳转。其实我的内心是想使用Activity来着,果断还是觉得太蠢了,一个功能性的引导页,也就进程序使用一次,难道我要写4-5个Activity来实现?所以果断还是使用Fragment来实现。先来一个Fragment的生命周期,了解生命周期才能知道方法放在哪儿更合适。
//初始化
@Override
public void initView() {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragment_container, ActivationFragmentFactory.getFragment(FRAGMENT_LANGUAGE));
index = FRAGMENT_LANGUAGE;
transaction.commit();
}
//入栈fragment
private int addFragment(BaseFragment fragment, String stackName){
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.fragment_container,fragment,stackName);
transaction.addToBackStack(stackName);
return transaction.commit();
}
//出栈fragment
private void popBackStack(){
FragmentManager manager = getSupportFragmentManager();
manager.popBackStack();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if (index != FRAGMENT_LANGUAGE){
backFunction();
return false;
}
}
return super.onKeyDown(keyCode, event);
}
在上一步下一步的方法主要就是Fragment出栈和入栈的方法,直接调用即可。然后需要注意需要重新返回键按钮,因为我们是一个Activity,用户按了返回键的意思是到上一个页面,而不是直接退出了程序。