4给一个activity增加一个fragment


同长一个fragment作为一个activity UI的一部分,并嵌入到整个结构中。

两种方式 增加一个fragment到activity layout中:

4.1 在activity layout文件中声明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">

    <fragmentandroid:name="com.example.news.ArticleListFragment"

            android:id="@+id/list"

            android:layout_weight="1"

            android:layout_width="0dp"

            android:layout_height="match_parent"/>

    <fragmentandroid:name="com.example.news.ArticleReaderFragment"

            android:id="@+id/viewer"

            android:layout_weight="2"

            android:layout_width="0dp"

            android:layout_height="match_parent"/>

</LinearLayout>

上面代码中的,android:name属性指定了这个layout被实例化的fragment类。

当系统创建这个activity layout,这个layout中的每个fragment都被实例化,并且每个fragment都调用onCreateView()方法,检索每个fragment的layout。 (“增加一个用户界面”已经提到onCreateView()方法返回的是一个View),系统直接插入这个返回的View到<fragment>元素,并替换这个<fragment>元素


每个fragment都需要一个独一无二的标示符,这样:

1如果activity被重新启动,系统就能够使用它来还原这个fragment,

2你可以捕获这个fragment,来对它进行一些处理,比如将他删除


有三种方式给一个fragment提供一个ID:

android:id, 独一无二的id

Androide:tag, du独一无二的String

如果你两种方式都没提供,体统会讲这个container view的ID给他


4.2 编程方式来增加fragment到一个已存在的ViewGroup

当你的activity运行的时候,你也能够增加fragments到你的activity layout。你只要指定一个ViewGroup(用来存放fragment的layout)

要对fragment进行操作(e.g.: add, remove, replace fragment),你都必须使用FragmentTransaction 的APIs(这边的Transaction 翻译成事物,一个事物中可以进行很多操作,这些操作都看做是绑定在一起的,只要一个操作出现了问题,所有的操作都失效). 你可以从你的activity中获得FragmentTransaction的实例。

FragmentManager fragmentManager = getFragmentManager()

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();


你可以使用add()方法来增加一个fragment,指定要增加的view,还有存放这个view的view

ExampleFragment fragment =new ExampleFragment();

fragmentTransaction.add(R.id.fragment_container, fragment);

fragmentTransaction.commit();


add()的第一个参数是ViewGroup, 通过source ID指定,第二个参数是要添加的这个fragment,一旦你对FragmentTransaction做了改动,你必须调用commit()来提交这些改变。


4.3 增加一个没有UI的fragment

有时我们需要activity背后的行为,而不用展示额外的UI.


要增加一个没有UI的fragment,来自activity的fragment使用add(Fragment,String),给fragment提供一个独一无二的String “tag”而不是view ID. 这个增加了fragment,但是由于他跟activity layout中的一个view无关,他不接收onCreateView()的调用,因此你不需要实现这个方法。


提供一个String tag给fragment对non-UI fragment不是不许的,你也可以提供String tags 给那些有UI的fragment,但是对那些没有UI的fragment, string tag 是识别他们的唯一的方式。如果你以后想从activity

得到这个fragment,你需要使用findFragmentByTag()





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 一个Activity可以包含多个Fragment,这些Fragment可以在Activity的布局中嵌套显示,也可以在Activity运行时动态添加或移除。每个Fragment都有自己的生命周期和布局,可以独立地处理用户交互和数据展示。通过在ActivityFragment之间进行通信,可以实现复杂的应用程序逻辑和界面交互。同时,使用Fragment还可以实现多屏幕适配和模块化开发,提高应用程序的可维护性和可扩展性。 ### 回答2: 一个Activity可以包含多个Fragment,而不仅仅是一个Fragment。这个特性使得应用程序的界面更加灵活和易于扩展。每个Fragment向用户展示一个小的UI组件,比如一个输入框、一个列表或者一个图片。这些小的UI组件通过Activity的布局被组合在一起,形成一个复杂的界面。 通过在Activity中添加多个Fragment,可以将UI分成多个可重用的模块。这样做的优点有: 1. 易于维护和升级:由于Fragment可以被视为Activity中的独立单元,因此可以轻松地使用独立的代码库进行维护和升级。 2. 分层结构清晰:通过使用多个Fragment,可以创建一个层次结构更加清晰的UI,让用户更容易理解和使用。 3. 更好的可扩展性:通过添加新的Fragment,可以快速地扩展已有的应用程序,并增加新的功能。 4. 设计灵活性更高:通过使用多个Fragment,可以更灵活地布局应用程序,使其更符合用户需求和设备屏幕尺寸。 虽然使用多个Fragment可以带来很多优点,但也应该注意不要滥用。如果使用过多的Fragment,会导致应用程序变得复杂和难以维护。因此,在设计应用程序的时候,应该根据需求和屏幕尺寸来适当地使用多个Fragment,达到最优的效果。 ### 回答3: Android应用程序开发通常使用ActivityFragment两种组件来构建应用程序界面。Activity是应用程序的主要组件,当应用程序启动时,会默认启动一个Activity。而Fragment则是Activity内部的组件,一种小型的Activity。可以在一个Activity内嵌入多个Fragment,实现更加丰富的界面效果。 一般情况下,一个Activity会包含多个Fragment。每个Fragment可以有自己的布局和逻辑处理。Fragment可以被动态添加到Activity中,并且可以根据需要动态地删除或替换。这种方式可以让应用程序在不同的设备上适应不同的屏幕大小。例如,在平板电脑上,应用程序可以显示多个Fragment,而在智能手机上,则只能显示一个Fragment。 在一个Activity中使用多个Fragment的好处在于可以实现多个UI界面。不同的Fragment可以处理不同的任务,例如,一个Fragment可以显示数据列表,另一个Fragment可以用来编辑这些数据。当用户点击菜单或按钮时,可以动态地在Activity中添加、删除或替换Fragment,从而实现不同的UI效果。 此外,使用多个Fragment还可以方便地实现界面的复用。例如,可以在不同的Activity中使用同一个Fragment来显示数据列表或一组控件。这样可以节省开发时间和代码量,同时也可以使应用程序更加简洁。 总之,一个Activity多个FragmentAndroid应用程序开发中常见的设计模式。通过灵活地添加、删除或替换Fragment,可以实现丰富多彩的UI效果,同时也可以方便地实现UI的复用。因此,开发者在进行应用程序开发时,可以根据实际需求使用这种设计模式,从而提高开发效率和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值