Android中Fragment的使用

401 阅读1分钟

遇到的第一个难点:Fragment

使用方式:

activity托管UI fragment有如下两种方式:

  • 在activity布局中添加fragment,简单但不够灵活。

  • 在activity代码中添加fragment,可以动态控制fragment。

创建Fragment

  • 创建fragment类并定义用户界面布局文件;
  • 编写代码以实例化组件。
  1. 创建fragment类并定义用户界面布局文件

new->Fragment—>Fragment(Blank)就完事了,在刚建的布局文件里改一改,加入所需要的东西。

  1. 修改java文件中onCreateView方法

return inflater.inflate(R.layout.fragment_blank, container, false)改成View v = inflater.inflate(R.layout.fragment_blank, container, false);下面实例化组件,最后return v。 比如这样:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime, container, false);
textview = v.findViewById(R.id.textview);
...
return v;
}

向 FragmentManager 添加 UI fragment

FragmentManager类负责管理fragment并将它们的视图添加到activity的视 图层级结构中。

要托管的Activity的布局文件将布局改为FrameLayout,FrameLayout的id改为fragment_container

在要托管的Activity的onCreate()方法中增加:

FragmentManager fm = getSupportFragmentManager();    //获得FragmentManager
Fragment fragment = fm.findFragmentById(R.id.fragment_container);//通过容器视图资源ID,向FragmentManager请求并获取fragment,如果要获取的fragment在队列中, FragmentManager就直接返回它
    if (fragment == null) {     //如果指定容器视图资源ID的fragment不存在,则fragment变量为空值
        fragment = new CrimeFragment();     //新建CrimeFragment,并启动一个新的fragment事务,将新建fragment添加到队列中
         fm.beginTransaction()  //开启事务
            .add(R.id.fragment_container, fragment)//添加fragment
            .commit();//提交
    }

成功了,其他的都不会