Android中Fragment的两种创建方式(2)

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_main" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="horizontal" 8 tools:context="com.example.administrator.fragmenttest.MainActivity"> 9 <fragment 10 android:layout_width="0dp" 11 android:layout_height="match_parent" 12 android:layout_weight="1" 13 android:name="com.example.administrator.fragmenttest.LeftFragment" 14 tools:layout="@layout/left_layout" /> 15 <fragment 16 android:layout_width="0dp" 17 android:layout_height="match_parent" 18 android:layout_weight="3" 19 android:name="com.example.administrator.fragmenttest.RightFragment" 20 tools:layout="@layout/right_layout" /> 21 </LinearLayout> 

(2)通过java代码将fragment添加到已存的ViewGroup中

这里我们演示将右边侧的fragment(right_layout.xml)通过java代码添加到主布局viewgroup。

通过代码添加fragment用到的知识点汇总如下:

想要管理activity中的fragment,可以使用FragmentManager。可以通过在activity中调用getFragmentManager()获得。使用FragmentManager可以做如下事情,包括:

1.使用findFragmentByld()(用于在activity布局中提供有界面的fragment)或者fjndFragmentByTag()获取activity中存在的fragment(用于有界面或者没有界面的fragment)。

2.使用popBackstack()(模仿用户的BACK命令)从后台栈弹出fragment。

3.使用addonBackstackChangedListener()注册一个监听后台栈变化的监听器。

在activity中使用fragment的一大特点是具有添加、删除、替换,和执行其它动作的能力,以响应用户的互动。提交给activity的每一系列变化被称为事务,并且可以用FragmentTransactjon中的APIs处理。

这里用到的的知识点会在代码中做标注,大家可以通过查看API文档具体了解扩展用法。

第一步:Layout中主布局文件activity_main2.xml文件(左侧fragment布局直接在布局中声明,右侧fragment通过代码填充到FrameLayout实现):

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_main" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="horizontal" 8 tools:context="com.example.administrator.testfragment.MainActivity"> 9 <fragment 10 android:id="@+id/left" 11 android:layout_width="0dp" 12 android:layout_height="match_parent" 13 android:layout_weight="1" 14 android:name="com.example.administrator.testfragment.LeftFragment" 15 tools:layout="@layout/left_layout" /> 16 <FrameLayout 17 android:id="@+id/right" 18 android:layout_width="0dp" 19 android:layout_height="match_parent" 20 android:layout_weight="3"></FrameLayout> 21 </LinearLayout> 

第二步:Java中对应主布局的Main2Activity.java通过代码将fragment添加到主布局ViewGroup中:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/dbce59adc958911bfb3841d0c2b68e1b.html