Fragment基础----创建

1,Fragment的目的及应用场景

fragment 是3.0后引入的类,其字面翻译为“碎片”。

目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化UI并提高复用性。

2,Fragment的创建

第一种方式:通过xml标签创建

  step 1:创建fragment类继承fragment关系类,其中导包的时候app包为3.0以后使用,v4包可以向下兼容

  step 2:在activity的xml文件中添加fragment标签并添加name属性为fragment全路径

   <fragment
        android:id="@+id/fragment_center"
        android:name="singleorb.com.fragment.FragmentCenter"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <fragment
        android:id="@+id/fragment_bottom"
        android:name="singleorb.com.fragment.FragmentBottom"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

  

  step 3:创建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"
    android:background="#00ff11">

</LinearLayout>

  

<?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"
    android:background="#ff0000">

</LinearLayout>

  

  step 4:并在onCreateView中添加

public class FragmentBottom extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_xml_bottom, container, false);
        return view;
    }
}

  

public class FragmentCenter extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_xml_center, container, false);
        return view;
    }
}

  step 5:启动即可看到结果,把activity分成两部分

第二种方式:通过Java代码方式创建

  1,只需把第一种方法的fragment标签换成FramLayout去掉name属性

  <FrameLayout
        android:id="@+id/fragment_code_center"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <FrameLayout
        android:id="@+id/fragment_code_bottom"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

  

  2, 然后再在activity中添加相应引入代码即可

/*
 *java 代码动态添加fragment 需要两个操作对象
 * FragmentManager
  *FragmentTransaction
 */
        //获取FragmentManager实例
        FragmentManager fragmentManager = getFragmentManager();
        //开启事务
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        //添加布局文件
        fragmentTransaction.add(R.id.fragment_code_center, new FragmentCenter());
        fragmentTransaction.add(R.id.fragment_code_bottom, new FragmentBottom());
        //提交
        fragmentTransaction.commit();

  

得到的结果和用xml创建的一样,但是用Java代码来创建可以更灵活的使用所以推荐应用Java代码方式创建

时间: 2024-12-22 07:26:11

Fragment基础----创建的相关文章

Fragment基础操作

Fragment和Activity类似,同样是具备UI的属性:也就是都能用于规划UI布局... Building a Dynamic UI with Fragments --> Fragments具备有动态UI的属性.为了在Android上为用户提供动态的.多窗口的交互体验,我们需要将UI组件和Activity操作封装成模块进行使用,使得我们可以在activity中对这些模块进行切入切出操作.可以用Fragment来创建这些模块,Fragment就像一个嵌套的activity,拥有自己的布局(l

android fragment 重复创建的问题

解决fragment重复创建目前用到有两个方法: 1.fragment同viewpager一起使用: vp.setOffscreenPageLimit(3);//设置缓存页面的个数 2.fragment单独使用: 在onCreateView()方法中加入: if (null == view) { view = inflater.inflate(R.layout.XXX, null); } ViewGroup parent = (ViewGroup)view.getParent(); if (pa

python Tkinter 基础 创建一行文字的窗体并设置窗体的标题 Label,title

# Tkinter 基础 创建一行文字的窗体并设置窗体的标题 Label,title import tkinter as tk app = tk.Tk() # 实例化一个TK 用于容纳整个GUI程序 app.title("test01") # 设置窗体的标题栏 # 设置label主键 , 显示文本,图标与图片 theLabel = tk.Label(app, text = "这是一个窗口") theLabel.pack() # 自动调节 主键的尺寸与位置 # 窗口的

android开发(2):多页面的实现 | Fragment的创建与使用

APP中出现多个页面再常见不过了.使用activity与fragment都能实现多页面,这里使用fragment来实现.延续"知音"这个APP的开发,之前已经创建了底部导航条与mainactivity. 首先创建一个fragment,作为"广场"页面.在菜单中new一个fragment出来即可,如下面的截图: 此时会自动生成这个fragment的xml跟类,xml用于界面设计,而fragment类用于界面管理,并被activity类使用,请看截图: 注意,Fragm

Fragment基础----信息传递

如何通过activity来访问fragment的信息呢,我们可以通过一个实例来了解. 使用两个Fragment和一个activity管理 效果图: 第一个fragment来表示输入框 第二个fragment表示listview内容 最终由activity来控制两个fragment. 实现方法: fragment与其附着的activity之间的通讯最佳方式: 1, 在发起事件的fragment中定义一个接口,借口中声明你的方法 2,在onattach中要求activity实现该接口 3,在acti

android之Fragment基础详解(一)

一.Fragment的设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互. 针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Frag

Android 学习之Fragment的创建

本节学习Fragment, Fragment是Android3.0引入的新的API.引入的初衷是为了适合大屏幕的平板电脑.Fragment代表了Activity的子模块,因此可以把Fragment理解为Activity的片段.本节学习如何创建Fragment. 1:先创建一个布局文件,用于显示,左边是按钮用来切换Fragment,而右边就是fragment要显示的内容 <LinearLayout xmlns:android="http://schemas.android.com/apk/r

完美解决Viewpager+Fragment 重复创建的问题

今天使用Viewpager+Fragment时发现我的Fragment会重复创建(可以打log查看生命周期) 解决办法: //设置viewpager的缓存页面的个数 mViewPager.setOffscreenPageLimit(4); mViewPager.setAdapter(mAdapter);

Fragment解析创建和传参,动态添加fragment

一下是个人的一些总结. 为fragment创建XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <