今天初步学习到了Fragment ,如果说activity是一堵墙, 那么它类似于一个便利贴,能将内容写在上面粘贴到任意一面墙上, 而不需要每一堵墙上都写满相同的内容 ,

下面我们来了解 怎样编写 Fragment  以及 动静态加载 传参 的代码

Fragment  之  静态传参

第一步:创建一个 FragmentA.java 文件, 编写如下代码

packagecom.lym.week12.fragment;importandroid.os.Bundle;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importcom.lym.week12.R;public class FragmentA extendsFragment{//初始化布局和控件

@Nullable

@OverridepublicView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {/*** LayoutInflater 布局加载器*/View view= inflater.inflate(R.layout.fragment_a,null);

View textView=view.findViewById(R.id.text_view);returnview;

}

}

第二步:在layout下编写上诉代码中需要用到的 fragment.fragment_a.xml 文件

第三步:编写 activity_main.xml 文件

第四步:编写 MainActivity.java 文件

packagecom.lym.week12;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;public class ActivityWechat extendsAppCompatActivity {

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

Fragment 之 动态传参

第一步:编写一个 fragmentB.java 文件

packagecom.lym.week12.fragment;importandroid.os.Bundle;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importcom.lym.week12.R;public class FragmentB extendsFragment{

@Nullable

@OverridepublicView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view= inflater.inflate(R.layout.fragment_b, null);returnview;

}

}

第二步:在layout中编写上述代码中用到的 fragment_b.xml 文件

第三步:编写 activity_main.xml 文件

第四步:编写  MainActivity.java 文件

packagecom.lym.week12;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.widget.Button;importcom.lym.week12.fragment.FragmentB;importcom.lym.week12.fragment.FragmentC;public class MainActivity extendsAppCompatActivity {privateFragmentC fragmentC;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

loadFragmentB();

}/*** 1.动态加载FragmentB*/

private voidloadFragmentB() {//1.获取fragment管理器

android.support.v4.app.FragmentManager manager =getSupportFragmentManager();//2.开启一个事务

android.support.v4.app.FragmentTransaction transaction =manager.beginTransaction();

FragmentB fragmentB= newFragmentB();//3.向容器中添加fragment

transaction.add(R.id.fragment_b,fragmentB);//4.提交事务

transaction.commit();

}

}

此时 Fragment 的 动态传参 和 静态传参 已经编写完成,也可以发现两者 代码上只有些许的不同

但是 动态传参中 还有一些小小的缺陷,如上面动态传参代码中的数据也都是 初始化加载得到的,

并不是我們自己传入其中的, 那么 我们 怎样 来实现 真正得 动态传参 呢?

话不多少,我们上代码

第一步:我们再次创建 一个 fragmentC.java 文件

packagecom.lym.week12.fragment;importandroid.os.Bundle;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.TextView;importcom.lym.week12.R;public class FragmentC extendsFragment{privateTextView textView;

@Nullable

@OverridepublicView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view= inflater.inflate(R.layout.fragment_c, null);

textView=view.findViewById(R.id.text_view);

Bundle bundle= getArguments(); //获取 MainActivity.java 发过来的参数

if (bundle!=null){ //如果bundle不为空

String data1 = bundle.getString("data"); //把得到data里的值赋给字符串data1

textView.setText(data1); //把data1传给fragment_c中TextView 的 text

}returnview;

}public voidsendData(String data){

textView.setText(data);

}

}

第二步,我们分别编写上述代码中 高亮部分 的两个文件  fragment_c.xml  与 MainActivity.java

fragment_c.xml

MainActivity.java

packagecom.lym.week12;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentTransaction;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importcom.lym.week12.fragment.FragmentB;importcom.lym.week12.fragment.FragmentC;public class MainActivity extendsAppCompatActivity {privateFragmentC fragmentC;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

loadFragmentC();

Button button=findViewById(R.id.btn);

button.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

fragmentC.sendData("打游戏");

}

});

}private voidloadFragmentC() {//1.获取fragment管理器

FragmentManager manager =getSupportFragmentManager();//2.开启一个事务

FragmentTransaction transaction =manager.beginTransaction();

fragmentC= newFragmentC();

Bundle bundle= newBundle();//传入参数

bundle.putString("data", "家(杨明飞)");

bundle.putInt("int", 1000);

fragmentC.setArguments(bundle);//3.向容器中添加fragment

transaction.add(R.id.fragment_c, fragmentC);//4.提交事务

transaction.commit();

}

}

第三步:编写activity_main.xml文件

到这里 Fragment 简单的 静态传参 和 动态传参 就 写好了!

如有不对,多多指正!

java fragment_初步认识Fragment 之一 编写简单的fragment代码相关推荐

  1. java 加法程序_使用JAVAEE编写简单的加法程序

    软件152  罗俊 首先选择菜单file-new-maven project,勾选"Create a &simple project (skip archetype selectio ...

  2. Selenium3自动化测试——2. python编写简单自测代码

    开发人员在编写好代码后,测试人员如何在另个测试文件中对开发人员的文件进行测试呢? 例如,开发人员的代码如下,名字为calculator.py. # 创建add函数 def add(a, b):retu ...

  3. Java用JDBC连接MySQL并进行简单查询

    写在前面 *********************************************************************************************** ...

  4. 什么是java?以及java的初步简单学习

    什么是Java编程 List item 语言Java编程语言:应用场景:非windows平台下互联网环境的开发首选JDK JRE JVMJDK是Java开发工具箱,包括了JREJRE是Java运行时环 ...

  5. java简单课程_Java之从头开始编写简单课程信息管理系统

    编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: 一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并 ...

  6. 编写java判断闰年_用Java程序判断是否是闰年的简单实例

    我们知道,(1)如果是整百的年份,能被400整除的,是闰年:(2)如果不是整百的年份,能被4整除的,也是闰年.每400年,有97个闰年.鉴于此,程序可以作以下设计: 第一步,判断年份是否被400整除, ...

  7. 使用Java编写简单的老虎机游戏

    无论游戏多么简单或复杂 ,Java都能胜任! 在这篇文章中,让我们看一下Java编程的初学者如何制作一个简单而功能齐全的老虎机. 老虎机已经存在很长时间了,但是它的娱乐价值似乎并没有减弱. Inter ...

  8. js装修计算器java代码_用js编写的简单的计算器代码程序

    最近编写的一个简单的计算器代码程序,先给大家展示一下 分享代码如下 #box{width: 295px; margin: 0 auto; text-align: justify; border: 1p ...

  9. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

最新文章

  1. c++重载后置++和--
  2. Java设计模式之适配器模式
  3. 理解Tomcat架构、启动流程及其性能优化
  4. 200808C阶段一点菜系统界面及运行
  5. Error: This command has to be run with superuser privileges (under the root user on most systems).
  6. python设置格式模板
  7. mysql删除中继日志_mysql 中继日志删除可以自动获取吗
  8. 关于SVN常用命令之export
  9. ActionScript 3.0 编程
  10. 一文掌握 Docker 技术体系
  11. 11.Linux/Unix 系统编程手册(上) -- 系统限制和选项
  12. java poi jar包下载_poi.jar下载-poi.jar包 3.8/3.9/3.10 免费版 - 河东下载站
  13. modbus tcp主站和从站_实例分享!西门子PLC通过MODBUS控制变频器
  14. luogu P5867 【[SEERC2018]Fishermen】
  15. He's a Pirate---David Garrett
  16. Gartner:云安全进入高速发展期
  17. 微型计算机原理及应设计试卷,微型计算机原理及应用试卷2002年10月
  18. r语言进行go富集分析_GO富集柱状图
  19. Winform像菜单一样弹出自定义内容实现示例
  20. oracle的top命令,ORACLE db top 命令(oratop)

热门文章

  1. java中对象排序_java中 对象的排序
  2. 源码编译打包_Atlas 2.1.0 实践(1)—— 编译Atlas
  3. mysql 主键溢出检查_详解MySQL 表中非主键列溢出情况监控
  4. 对于局部变量_浅谈Shell函数中全局变量和局部变量
  5. 使用TensorFlow.js进行人脸触摸检测第1部分:将实时网络摄像头数据与深度学习配合使用
  6. Visual Studio Code 1.42 发布
  7. PyCharm 2019.3 EAP 7 发布,支持 R 语言插件
  8. 实现机器学习的循序渐进指南III——朴素贝叶斯
  9. 从Android上的相机裁剪图像
  10. python oracle query,python链接oracle/plsql数据库 ,查询功能(query) 用cursor fetchall