`

Andriod Fragment---给Activity添加一个Fragment(转)

阅读更多

通常,Fragment作为Activity整体视图层次树的一部分,被嵌入到宿主Activity的界面的一部分。有两种方法能够把Fragment添加到Activity布局中:

1.  在Activity布局文件的内部声明Fragment。

你能够像一个视图那样给Fragment指定布局属性。下例说明了给Activity指定两个Fragment的布局文件。

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

 

 

 

在<fragment>元素中的android:name属性指定了在布局中要实例化的Fragment。

当系统创建这个Activity布局时,它实例化在布局中指定的每一个Fragment,并且分别调用onCreateView(),来获取每个Fragment的布局。然后系统会在Activity布局中插入通过<fragment>元素中声明直接返回的视图。

注:每个Fragment需要一个唯一的标识,这样能够在Activity被重启时系统使用这个ID来恢复Fragment(并且你能够使用这个ID获取执行事务的Fragment,如删除)。有三种给Fragment提供ID的方法:

A. 使用android:id属性来设置唯一ID;

B. 使用android:tag属性来设置唯一的字符串;

C. 如果没有设置前面两个属性,系统会使用容器视图的ID。

 

2.  编程给一个既存的ViewGroup添加Fragment。

在Activity运行的任何时候,都可以把Fragment添加到Activity布局中。你只需要指定一个放置Fragment的ViewGroup。要在Activity中使用Fragment事务(如添加、删除、或替换Fragment),必须使用来自FragmentTransaction的APIs。你能够向下面例子那样从Activity中获取一个FragmentTransaction实例:

FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

 

 

然后,你能够使用add()方法把Fragment添加到指定的视图中,如:

ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();

 

传递给add()方法的第一个参数是Fragment应该被放入的ViewGroup,通过资源ID来指定这个ViewGroup,第二个参数是要添加的Fragment。

一旦FragmentTransaction对象发生了改变,就必须调用commit方法来提交改变的影响。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics