各位看官们,大家好,上一回中咱们说的是Android中Fragment的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在上一回中提到了Fragment的两种嵌套方法:静态嵌套和动态嵌套,并且介绍了静态嵌套Fragment的方法,这一回中我们将介绍动态嵌套Fragment的方法。
动态嵌套Fragment的方法和动态加载Fragment的方法类似,也是在父Fragment的布局文件中给子Fragment预留一个位置,然后在父Fragment的代码中通过代码来加载子Fragment,总体的思想就是这样,具体的细节我们将结合代码来说明。
- 1.创建一个名为frag_a的布局文件,该文件就是FragmentA的布局文件,至于布局文件中的内容,可以自己去定义;
- 2.创建一个名为FragmentA的类,该类继承自Fragment,接着重写该类的onCreateView方法, 具体的代码为:
public class FragmentB extends Fragment {
//重写onCreateView方法
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.frag_a,container,false); //frag_a就是刚才创建的布局文件
return view;
}
//override other callback
}
这两个步骤创建了FragmentA的布局文件和逻辑文件,我们把它当作父Fragment,再用同样的方法创建子Fragment,我们叫它FragmentB。
- 3.通过修改FragmentA的布局文件,使用布局标签把刚才创建的FragmentA和FragmentB关联起来,具体的代码为:
<LinearLayour ...> //这是FragmentA的布局文件
<Fragment //使用Fragment标签或者其它布局标签都可以,比如LinearLayout。
android:id=frag_son_container //这个不可少,它是父Fragment给子Fragment预留的位置
.... //其它长度,宽度等大小属性省略不写
/>
</LinearLayour>
- 4.在FragmentA的onCreateView()方法中使用FragmentManager的相关方法来加载FragmentB.
FragmentManager fm = getchildFragmentManager(); //首先需要获取FragmentManager
FragmentTransaction transaction = fm.beginTransaction(); //开始FragmentManager的事务
transaction.add(R.id.frag_son_container,new FragmentB()); //添加FramentB到Fragment给它预留的位置
transaction.commit(); //提交事务
看官们,看完这个代码细节后是不是觉得动态嵌套Fragment和动态加载Fragment十分类似?是的,仔细对比一下就会发它们的不同之处只有一点:获取FragmentManager的方法不同。动态嵌套Fragment使用的是Fragment
的getchildFragmentManager()
方法,而动态加载Fragment使用的是Activity
的getSupportFragmentManager()
方法。类不同其方法自然也不同,大家使用的时候不要混淆就可以。
此外,我们在这里没有写出Activity的布局文件,FragmentA和FragmentB是不能单独使用的,它需要加载到Activity中,至于使用静态加载还是动态加载,我们不关心,因为使用哪种方式都一样。这和静态嵌套方法中的处理方式一样。
各位看官,关于Android中Fragment的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!