为什么要使用Fragment就不再多说了,网上有很多介绍,Fragment相对于Activity更灵活。为什么呢?Fragment与Activity有什么联系与区别呢?如果说Activity是一个大箱子的话,Fragment就是大箱子里面分装东西的小盒子,这样很容易理解东西分装在小盒子里更容易替换或更改,界面改变与设计也就更加灵活。这里就重点谈一下Fragment的入门使用动态加载与静态加载。
静态加载
特点:Fragment直接嵌入到Activity的xml文件中,这种方式使用fragment代码量少,但是灵活度低。
如下:直接在Activity的xml文件中嵌入MyFragment,然后对MyFragment进行设计,这里也可以嵌入多个,以一个为例。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragmentContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" > <fragment android:id="@+id/MyFragment" android:name="com.example.learningtest1_fragment.MyFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout>
Fragment对应这一个布局文件,用来控制界面上控件的排版。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button"/> </LinearLayout>
细心地同学可能发现了一个问题,这两个xml文件,Actvity的xml文件中嵌入fragment,fragment的xml文件控制界面控件排版,那么二者的联系点在哪?也就是说activtiy怎么知道加载哪个fragment呢?注意activity中这一行 android:name="com.example.learningtest1_fragment.MyFragment"。没错就是根据类名来唯一标识这种联系的。很明显,我们还需要一个MyFragment的类来作为纽带。
package com.example.learningtest1_fragment; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @SuppressLint("NewApi") public class MyFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * resource:需要加载的布局文件 * root:加载layout的父viewgroup的 * false:不返回父viewgroup */ View view= inflater.inflate(R.layout.myfragment, container, false); TextView tv=(TextView)view.findViewById(R.id.text1); tv.setText("静态加载fragment"); return view; } }
如此,在Activity显示的时候,fragment中的视图就会显示在界面上。
动态加载
特点:不在Activity的xml中嵌入,而是在代码中使用FragmentManger控制加载。这种方式灵活度高,可以通过代码替换、增加、移除fragment,但是代价就是大量代码用于加载控制。
同样,创建一个类MyFragmnet2
package com.example.learningtest1_fragment; import android.annotation.SuppressLint; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @SuppressLint("NewApi") public class MyFragment2 extends android.app.Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * resource:需要加载的布局文件 * root:加载layout的父viewgroup的 * false:不返回父viewgroup */ View view= inflater.inflate(R.layout.myfragment2, container, false); TextView tv=(TextView)view.findViewById(R.id.text1); tv.setText("动态加载fragment"); return view; } }
其对应的Fragmnet2.xml文件是:
相关推荐
动态加载与静态加载的区别** - **初始化时机**:静态加载在Activity启动时自动完成,而动态加载在运行时按需进行。 - **灵活性**:动态加载提供更大的灵活性,可以在运行时根据用户行为或数据变化添加、删除或替换...
二、Fragment静态加载步骤 1. 创建Fragment类:首先,你需要创建一个继承自Fragment的类,并实现其生命周期方法。 2. 布局设计:为Fragment创建对应的布局文件,如fragment_layout.xml。 3. XML布局添加:在需要...
静态加载Fragment是指在布局XML文件中定义并添加Fragment,与动态加载(通过编程方式添加)相比,静态加载更简单且适用于不频繁变化的界面部分。下面将详细介绍Android静态加载Fragment的相关知识点。 首先,我们...
静态加载Fragment是指在布局XML文件中预先定义并添加Fragment的方式,与动态加载(通过编程方式添加)相对。下面我们将深入探讨静态加载Fragment的概念、优势、使用步骤以及相关源码分析。 首先,理解Fragment的...
在静态加载中,Fragment在XML布局文件中被直接声明。开发者在Activity的布局文件中定义Fragment的占位符,并在Activity的onCreate()方法中通过FragmentManager和FragmentTransaction将Fragment添加到Activity中。...
- 动态加载意味着在运行时根据需要添加、替换或移除Fragment,而不是在布局XML文件中静态定义。 - 这种灵活性有助于实现响应式界面,适应不同屏幕尺寸和用户需求。 3. **添加Fragment**: - 使用`...
动态加载Fragment主要是指在运行时根据需要创建、添加、替换或移除Fragment,这对于应对不同屏幕尺寸和方向变化(如横竖屏切换)的应用设计尤为关键。本篇文章将深入探讨“dynamic-fragment动态加载fragment”的概念...
总的来说,理解和掌握Fragment的静态与动态用法是Android开发中必不可少的技能,它们可以帮助开发者构建出适应多种设备和用户需求的复杂应用。通过合理地组合和使用这两种方式,可以提升应用的可维护性和用户体验。
Fragment的静态加载与动态加载是两种不同的实现方式,它们各自有不同的应用场景和优势。 一、Fragment的静态加载 静态加载是指在XML布局文件中直接定义Fragment,即将Fragment作为Activity布局的一部分预先加载。...
静态Fragment是指在布局XML文件中定义并添加到Activity中的Fragment,与动态编程方式(通过Java代码添加)相对。本示例将详细介绍如何在Android应用中使用静态Fragment。 首先,创建一个新的Android项目,确保在`...
这个"fragment静态应用的一个Demo"提供了学习Fragment基础知识的良好起点,尽管没有涉及动态添加和管理Fragment,但对初学者来说,理解和掌握静态使用已经足够打下坚实的基础。通过进一步学习,开发者可以熟练地运用...
静态加载Fragment是指在XML布局文件中直接定义Fragment,而不是在运行时通过代码动态添加。这通常适用于Fragment在整个Activity生命周期中都存在的场景。 1. **在XML布局文件中声明Fragment** 在你的activity布局...
以下是对"实现静态、动态、添加、删除、隐藏、显示、替换Fragment事件"这一主题的详细解释: 1. **静态Fragment**: 静态Fragment是在XML布局文件中定义的。在`<fragment>`标签中指定Fragment的类名和属性,例如:...
在本文中,我们将主要介绍如何实现 Android 碎片的静态加载,首先我们需要继承 FragmentActivity 类,然后在活动中加载碎片,使用 setContentView() 方法将碎片添加到活动中。 在创建碎片时,我们需要继承 ...
对于需要动态加载或替换的Fragment,可以考虑使用`FragmentManager`的`beginTransaction()`方法进行添加和管理。 总之,通过在XML布局文件中静态添加Fragment,我们可以更方便地构建复杂的界面结构,同时保持代码的...
动态加载Fragment是指在程序运行时根据需要创建并添加到Activity中的过程,而不是在布局XML文件中静态定义。这种方式增加了应用的灵活性,使得我们可以根据用户行为或特定条件来动态显示或隐藏Fragment。 Android ...
静态注册是 Fragment 创建的一种方式,即在布局文件中直接定义 Fragment 的视图资源,然后在 Activity 中加载该布局文件。下面是静态注册的步骤: 1. 创建一个 StaticFragment.java 文件,继承 Fragment 类。 2. ...
动态加载Fragment是指在运行时根据需求创建并添加Fragment到Activity中的过程,而不是在XML布局文件中静态声明。这种技术在实现复杂的用户界面和模块化设计时特别有用。下面我们将深入探讨动态加载Fragment的概念、...