• Fragment

* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容

* 在一个Activity中切换多个界面,每个界面就是一个Fragment
* Fragmnent的内容也是一个View对象

* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity
* fragment切换时会销毁旧的,再创建新的
* 定义布局文件作为Fragment的显示内容

//此方法返回的View就会被显示在Fragment上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//用布局文件填充成一个View对象,返回出去,那么就显示在Fragment上了
View v = inflater.inflate(R.layout.fragment01, null);
return v; 
}
* 把Fragment显示至指定ViewGroup中

//把fragment显示至界面
//new出fragment对象
Fragment01 fg = new Fragment01();
FragmentManager fm = getFragmentManager();
//开启事务
FragmentTransaction ft = fm.beginTransaction();
//把fragment对象显示到指定资源id的组件里面
ft.replace(R.id.fl, fg);
ft.commit();

package com.itheima.fragment;import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;public class MainActivity extends Activity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showfagment01();}private void showfagment01() {//1.创建fragment对象Fragment01 fragment1 = new Fragment01();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment1);//5.提交
        ft.commit();}public void click1(View v){showfagment01();}public void click2(View v){//1.创建fragment对象Fragment02 fragment2 = new Fragment02();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment2);//5.提交
        ft.commit();}public void click3(View v){//1.创建fragment对象Fragment03 fragment3 = new Fragment03();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment3);//5.提交
        ft.commit();}}

MainActivity

package com.itheima.fragment;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class Fragment01 extends Fragment {//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment01, null);return v;}
}

Fragment01

package com.itheima.fragment;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class Fragment02 extends Fragment {//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment02, null);return v;}
}

Fragment02

package com.itheima.fragment;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class Fragment03 extends Fragment {//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment03, null);return v;}
}

Fragment03

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.fragment"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="11"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.fragment.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

AndroidManifest

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" android:orientation="horizontal"><FrameLayout android:id="@+id/fl"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"></FrameLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面1"android:onClick="click1"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面2"android:onClick="click2"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面3"android:onClick="click3"/></LinearLayout>
</LinearLayout>

activity_main

<?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="#00ff00"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:text="这是plus的帽子的绿色"/></LinearLayout>

fragment01

<?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"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:text="这是热情的红色"/></LinearLayout>

fragment02

<?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="#0000ff"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:text="这是plus戴上帽子的心情的蓝色"/></LinearLayout>

fragment03

  • 生命周期

* fragment切换时旧fragment对象会销毁,新的fragment对象会被创建

  • 低版本兼容

* 在support-v4.jar包中有相关api,也就是说fragment可以在低版本模拟器运行

package com.itheima.fragment;import android.os.Bundle;
import android.annotation.SuppressLint;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;public class MainActivity extends FragmentActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showfagment01();}private void showfagment01() {//1.创建fragment对象Fragment01 fragment1 = new Fragment01();//2.获取fragment管理器FragmentManager fm = getSupportFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment1);//5.提交
        ft.commit();}public void click1(View v){showfagment01();}public void click2(View v){//1.创建fragment对象Fragment02 fragment2 = new Fragment02();//2.获取fragment管理器FragmentManager fm = getSupportFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment2);//5.提交
        ft.commit();}public void click3(View v){//1.创建fragment对象Fragment03 fragment3 = new Fragment03();//2.获取fragment管理器FragmentManager fm = getSupportFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment3);//5.提交
        ft.commit();}}

View Code

package com.itheima.fragment;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class Fragment01 extends Fragment {//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment01, null);return v;}
}

Fragment01

  • Fragment和Activity传递数据

package com.itheima.transmit;import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {private Fragment01 fragment1;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showfagment01();}private void showfagment01() {//1.创建fragment对象fragment1 = new Fragment01();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment1);//5.提交
        ft.commit();}public void click1(View v){showfagment01();}public void click2(View v){//1.创建fragment对象Fragment02 fragment2 = new Fragment02();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment2);//5.提交
        ft.commit();}public void click3(View v){//1.创建fragment对象Fragment03 fragment3 = new Fragment03();//2.获取fragment管理器FragmentManager fm = getFragmentManager();//3.开启事务FragmentTransaction ft = fm.beginTransaction();//4.显示fragment//arg0:设置把fragment显示在哪个容器中
        ft.replace(R.id.fl, fragment3);//5.提交
        ft.commit();}public void click4(View v){EditText et_main = (EditText) findViewById(R.id.et_main);String text = et_main.getText().toString();fragment1.setText(text);}public void setText(String text){TextView tv_main = (TextView) findViewById(R.id.tv_main);tv_main.setText(text);}}

MainActivity

package com.itheima.transmit;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.TextView;public class Fragment01 extends Fragment {private TextView tv;//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment01, null);tv = (TextView) v.findViewById(R.id.tv_fragment1);return v;}public void setText(String text){tv.setText(text);}
}

Fragment01

package com.itheima.transmit;import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;public class Fragment03 extends Fragment implements OnClickListener {private EditText et;//系统自动调用,返回的View对象作为Fragment的内容显示
    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = inflater.inflate(R.layout.fragment03, null);Button bt_fragment03 = (Button) v.findViewById(R.id.bt_fragment03);et = (EditText) v.findViewById(R.id.et_fragment03);bt_fragment03.setOnClickListener(this);return v;}@Overridepublic void onClick(View v) {String text = et.getText().toString();((MainActivity)getActivity()).setText(text);}}

Fragment03

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" android:orientation="horizontal"><FrameLayout android:id="@+id/fl"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"></FrameLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面1"android:onClick="click1"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面2"android:onClick="click2"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="界面3"android:onClick="click3"/><EditText android:id="@+id/et_main"android:layout_width="match_parent"android:layout_height="wrap_content"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"android:onClick="click4"/><TextView android:id="@+id/tv_main"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
</LinearLayout>

activity_main

<?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="#00ff00"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:text="这是plus的帽子的绿色"/><TextView android:id="@+id/tv_fragment1"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

fragment01

<?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="#0000ff"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:text="这是plus戴上帽子的心情的蓝色"/><EditText android:id="@+id/et_fragment03"android:layout_width="match_parent"android:layout_height="wrap_content"/><Button android:id="@+id/bt_fragment03"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"/>
</LinearLayout>

fragment03

 

转载于:https://www.cnblogs.com/ecollab/p/5968421.html

android 学习随笔二十三(动画:Fragment )相关推荐

  1. android 学习随笔二十(多媒体编程 )

    1.图片处理 加载大图片 图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节 * 16色图:每个像素占用1/2个字节 * 256色图:每个像素占用 ...

  2. dagger android 学习(二):AndroidInjector的使用

    本系列博客主要用于自己学习积累,顺便帮助新手入门,如有问题,多多包涵.更详细的一些使用可以看看其他更加详细的博客. dagger android 学习(一):dagger基础使用 dagger and ...

  3. 转载:javaweb学习总结(二十三)——jsp自定义标签开发入门

    javaweb学习总结(二十三)--jsp自定义标签开发入门 转自:http://www.cnblogs.com/xdp-gacl/p/3916734.html 一.自定义标签的作用 自定义标签主要用 ...

  4. JavaScript学习(二十三)—scrollTop练习

    JavaScript学习(二十三)-scrollTop练习 <!DOCTYPE html> <html lang="en"><head>< ...

  5. Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法

    Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法 今天修改一个比较奇怪的bug: 在操作一个事件的时候,使用eventbus来监听事件,断点发现有时候是会执 ...

  6. 【Android】完善Android学习(二:API 2.3.4)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  7. android 学习随笔十三(网络:多线程下载)

    多线程断点续传下载 1.多线程:快 * 原理:抢占服务器资源 * 单线程下载:线程从第0个字节开始下,下到最后一个字节,在本地硬盘的临时文件中从第0个字节开始写,写到最后一个字节,下载完成时,临时文件 ...

  8. android 学习随笔十二(网络:使用异步HttpClient框架)

    使用异步HttpClient框架发送get.post请求 在https://github.com/  搜索 asyn-http https://github.com/search?utf8=✓& ...

  9. OpenGL蓝宝书源码学习(二十三)第七章——MultiTexture多重纹理

    在上一节CubeMap的基础上新增了一个纹理贴图实现多重纹理. // MultiTexture.cpp // OpenGL SuperBible // Demonstrates applying a ...

  10. 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/374.html L ...

最新文章

  1. 使用mybatis自动生成指定规则的编号
  2. ajax 同步怎么回调,Ajax jquery同步回调成功
  3. mysql begin operations_MySQL入门(七):More JOIN operations
  4. 微服务集成cas_Spring Boot + Solr 全文检索微服务简易集成
  5. 3.memcached的基本命令
  6. 设备树与驱动的关系_9 Linux设备树的原理与应用实例(一)—— 什么是设备树...
  7. c语言课程设计--太空战机,基于Funcode平台的软件课程设计
  8. c语言复杂程序100例,经典C语言程序100例(1-10)
  9. android模拟机型,(安卓)牛X分身 — 支持位置模拟机型修改
  10. JAVA练习216-整数的英语表示
  11. 航空公司客户流失分析
  12. golang slices使用和原理
  13. 网络接口层协议:ATM
  14. Nginx下上传图片404
  15. 如何制作gif表情包?试试这个gif表情包制作神器!
  16. vue开发环境、正式环境的配置及原理
  17. flutter, `get_ip` does not specify a Swift version and none of the targets (`Runner`) integrating...
  18. Python小白的数学建模课-01.新手必读
  19. 关于对CC系列知识共享许可证【CC BY-SA 4.0】 的理解及整理
  20. 在excel中绘制甘特图

热门文章

  1. 在ASP.NET中加密页面机制
  2. 查看python数据的属性
  3. android用单元测试的多,AndroidStudio中对Android应用进行单元测试InstrumentationTestCase...
  4. C# action 返回值_C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别
  5. Error opening Velodyne socket dump file 的一种可能解决方法
  6. php支付宝授权登录,PHP实现支付宝登录
  7. Flutter学习 — 处理点击
  8. L1-064 估值一亿的AI核心代码 (20 分)—团体程序设计天梯赛
  9. HDMI热插拔检测原理
  10. 什么,又是流程有问题?