java fragment_初步认识Fragment 之一 编写简单的fragment代码
今天初步学习到了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代码相关推荐
- java 加法程序_使用JAVAEE编写简单的加法程序
软件152 罗俊 首先选择菜单file-new-maven project,勾选"Create a &simple project (skip archetype selectio ...
- Selenium3自动化测试——2. python编写简单自测代码
开发人员在编写好代码后,测试人员如何在另个测试文件中对开发人员的文件进行测试呢? 例如,开发人员的代码如下,名字为calculator.py. # 创建add函数 def add(a, b):retu ...
- Java用JDBC连接MySQL并进行简单查询
写在前面 *********************************************************************************************** ...
- 什么是java?以及java的初步简单学习
什么是Java编程 List item 语言Java编程语言:应用场景:非windows平台下互联网环境的开发首选JDK JRE JVMJDK是Java开发工具箱,包括了JREJRE是Java运行时环 ...
- java简单课程_Java之从头开始编写简单课程信息管理系统
编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: 一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并 ...
- 编写java判断闰年_用Java程序判断是否是闰年的简单实例
我们知道,(1)如果是整百的年份,能被400整除的,是闰年:(2)如果不是整百的年份,能被4整除的,也是闰年.每400年,有97个闰年.鉴于此,程序可以作以下设计: 第一步,判断年份是否被400整除, ...
- 使用Java编写简单的老虎机游戏
无论游戏多么简单或复杂 ,Java都能胜任! 在这篇文章中,让我们看一下Java编程的初学者如何制作一个简单而功能齐全的老虎机. 老虎机已经存在很长时间了,但是它的娱乐价值似乎并没有减弱. Inter ...
- js装修计算器java代码_用js编写的简单的计算器代码程序
最近编写的一个简单的计算器代码程序,先给大家展示一下 分享代码如下 #box{width: 295px; margin: 0 auto; text-align: justify; border: 1p ...
- Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...
最新文章
- c++重载后置++和--
- Java设计模式之适配器模式
- 理解Tomcat架构、启动流程及其性能优化
- 200808C阶段一点菜系统界面及运行
- Error: This command has to be run with superuser privileges (under the root user on most systems).
- python设置格式模板
- mysql删除中继日志_mysql 中继日志删除可以自动获取吗
- 关于SVN常用命令之export
- ActionScript 3.0 编程
- 一文掌握 Docker 技术体系
- 11.Linux/Unix 系统编程手册(上) -- 系统限制和选项
- java poi jar包下载_poi.jar下载-poi.jar包 3.8/3.9/3.10 免费版 - 河东下载站
- modbus tcp主站和从站_实例分享!西门子PLC通过MODBUS控制变频器
- luogu P5867 【[SEERC2018]Fishermen】
- He's a Pirate---David Garrett
- Gartner:云安全进入高速发展期
- 微型计算机原理及应设计试卷,微型计算机原理及应用试卷2002年10月
- r语言进行go富集分析_GO富集柱状图
- Winform像菜单一样弹出自定义内容实现示例
- oracle的top命令,ORACLE db top 命令(oratop)
热门文章
- java中对象排序_java中 对象的排序
- 源码编译打包_Atlas 2.1.0 实践(1)—— 编译Atlas
- mysql 主键溢出检查_详解MySQL 表中非主键列溢出情况监控
- 对于局部变量_浅谈Shell函数中全局变量和局部变量
- 使用TensorFlow.js进行人脸触摸检测第1部分:将实时网络摄像头数据与深度学习配合使用
- Visual Studio Code 1.42 发布
- PyCharm 2019.3 EAP 7 发布,支持 R 语言插件
- 实现机器学习的循序渐进指南III——朴素贝叶斯
- 从Android上的相机裁剪图像
- python oracle query,python链接oracle/plsql数据库 ,查询功能(query) 用cursor fetchall