老样子,先上脑图:
我们就按照脑图的顺序一样样来看Fragment的基础知识。
正文:
1.Fragment的添加
我们知道Fragment是一个"碎片(或者片段)",添加在Activity中。如果我现在问你,Activity要显示一个按钮Button,你会怎么做?
1. 直接在Layout.xml中添加<Button/>
2. 在代码中动态添加,比如我们添加到一个LinearLayout中:
Button button = new Button(mActivity);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
button.setLayoutParams(params);
container.addView(button);
所以Fragment也很简单,就把它当做一个简单的View(但其实更像是“子 Activity”),然后添加方式也是一样。
1. 直接在Layout.xml中添加:
<?xml version="1.0" encoding="utf-8"?>2. 直接在代码中添加:
Fragment one = new FragmentOne();//自定义的Fragment类
//要先获取FragmentManager对象
FragmentManager fragmentManager = getSupportFragmentManager();
//开启一个FragmentTransaction事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.framelayout_view,one).commit();
其中添加到R.id.framelayout_view
的这个id
的ViewGourp
可以是<FrameLayout/>
,也可以是其他的比如<LinearLayout/>
等。
2. Fragment的基本操作
看到我们上面的动态代码添加的时候需要获取FragmentTransaction
和FragmentManager
。
2.1 FragmentManager相关
1. getFragmentManager():
获取Fragment父容器的管理器,但是现在该方法在Activity中已经被标记不推荐使用了。
/**
- Return the FragmentManager for interacting with fragments associated
- with this activity.
- @deprecated Use {@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()}
*/
@Deprecated
public FragmentManager getFragmentManager() {
return mFragments.getFragmentManager();
}
2. getSupportFragmentManager():
v4包下的这个方法,与上一个效果一样,不过是Android推荐使用的方法(毕竟可以兼容Android所有版本)
3. getChildFragmentManager():