雪月圣雕 发表于 2019-11-4 09:53:52

碎片Fragment

关于碎片的应用:
        我们在使用Android Studio时有时会用到碎片,碎片可以作为显示实际内容的载体,也可以作为加载其它视图(View)的载体。
        碎片必须有与之配套的布局内容,布局内容通常在碎片的onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)方法中被引用。
        使用布局加载器(LayoutInflater )的inflate()方法加载碎片布局。
        当碎片布局加载完毕后,还要将碎片引用到与显示的活动的布局文件中去,使用android:name="文件路径(包名+文件名)"引用。
        由于碎片中使用了LayoutInflater 加载碎片布局,所以android:name="文件路径(包名+文件名)"实际上是添加的碎片布局。
        当碎片作为加载其它视图(View)的载体时:
                我们需要在碎片布局中添加一个子项布局,同时创建该子项布局的XML文件,通过适配器将其加载到碎片布局中。
                例:我们需要做一个新闻标题的ListView视图。
                1.首先我们要建立新闻实体类、新闻标题的子项布局(news_item.xml)。
                2.随后,建立新闻标题的碎片、新闻标题碎片布局(news_title_frag.xml)。
                3.创建配置器加载新闻标题的子项布局(news_item.xml)。
                4.在碎片中实例化新闻标题碎片布局(news_title_frag.xml)的ListView,并使用setAdapter()方法建立ListView与数据集的连接。
                5.第4步应该写在onCreateView中。
        onCreateView属于碎片的生命周期的环节之一,在碎片的布局内容作为视图在活动中出现时调用

雪月圣雕 发表于 2019-11-4 10:03:35

如果不想使用android:name="文件路径",可以使用动态加载的方法。
该方法一般写于要加载碎片的活动中。
1.首先创建碎片实例。
2.得到FragmentManager,调用getSupportFragmentManager()方法得到。
3.开启一个事务。FragmentTransaction,调用FragmentManager的beginTransaction()方法得到。
4.向容器内添加或替换碎片,使用FragmentTransaction的replace()方法得到。
4.5.使用FragmentTransaction的addToBackStack(null);将碎片存入返回栈中。
5.提交事务。
页: [1]
查看完整版本: 碎片Fragment