Android Fragment是什么
Fragment是Activity中用户界面的一个行为或者一个部分。你可以在一个单独的Activity上把多个Fragment组合成一个多区域的UI,并且可以在多个Activity中使用。你可以认为Fragment是Activity的一个模块零件,它有自己的生命周期,接收它自己的输入时间,并且可以在Activity运行时添加或者删除。
Fragment的生命周期直接受其宿主Activity的生命周期的影响。例如,一旦Activity被暂停,它里面所有的Fragment也被暂停,一旦Activity被销毁,它里面所有的Fragment也被销毁。
Fragment的使用
第一种方式,主布局中实现,<fragment>标签里面的name属性指向要显示的Fragment类
<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"
tools:context=".MainActivity" > <fragment
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight=""
android:name="com.example.fragmentdemo.TitleFragment"
android:id="@+id/titlefragment"
/> <fragment
android:id="@+id/contentfragment"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight=""
android:name="com.example.fragmentdemo.ContentFragment"
/> </LinearLayout>
新建两个Fragment类 TitleFragment和ContentFragment
public class TitleFragment extends Fragment implements OnClickListener{
private MyMenuListener myMenuListener;
//重写onAttach方法,把TitleFragment依附的宿主mainActivity实现的接口传回给自己
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
myMenuListener=(MyMenuListener) activity;
}
//重写onCreateView 绑定布局给fragment,并且定义fragment当中按钮事件
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.titlelayout,container,false);
Button btn=(Button) view.findViewById(R.id.button1_menu);
btn.setOnClickListener(this);
return view;
}
//声明接口,为了Fragment之间通过它们的宿主mainActivity实现交互
public static interface MyMenuListener{
public void changeValue(String value);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.button1_menu:
myMenuListener.changeValue("One");
break;
default:
break;
}
}
}
public class ContentFragment extends Fragment {
private TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.contentlayout,container,false);
tv=(TextView) view.findViewById(R.id.textView1_content);
return view;
}
//定义该方法,为了在mainActivity中调用
public void changeTextView(String value){
tv.setText(value);
}
}
主代码mainActivity中实现Fragment之间交互显示
public class MainActivity extends Activity implements TitleFragment.MyMenuListener{
TitleFragment titleFragment;
ContentFragment contentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
titleFragment=(TitleFragment) getFragmentManager().findFragmentById(R.id.titlefragment);
contentFragment=(ContentFragment) getFragmentManager().findFragmentById(R.id.contentfragment);
}
@Override
public void changeValue(String value) {
// TODO Auto-generated method stub
contentFragment.changeTextView(value);
}
}
第二种方式,代码中添加Fragment,布局文件如下,这里用FrameLaout布局
<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"
tools:context=".MainActivity" > <fragment
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight=""
android:name="com.example.fragmentdemo.TitleFragment"
android:id="@+id/titlefragment"
/> <FrameLayout
android:id="@+id/content_layout"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight=""
></FrameLayout>
</LinearLayout>
代码中进行动态加载
public class MainActivity2 extends Activity{
ContentFragment contentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
addContentLayout();
}
private void addContentLayout()
{
FragmentManager fm=getFragmentManager();
//开启一个事务
FragmentTransaction ft=fm.beginTransaction();
contentFragment=new ContentFragment();
ft.add(R.id.content_layout,contentFragment);
ft.commit();
}
}
Android Fragment是什么的更多相关文章
- 【Android自学日记】【转】Android Fragment 真正的完全解析(下)
上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Frag ...
- Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为 ...
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...
- Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...
- Android Fragment使用(一) 基础篇 温故知新
Fragment使用的基本知识点总结, 包括Fragment的添加, 参数传递和通信, 生命周期和各种操作. Fragment使用基础 Fragment添加 方法一: 布局里的标签 标识符: tag, ...
- Android Fragment应用实战
现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上, ...
- Android Fragment 真正的完全解析(下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...
- Android Fragment
1.Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期. 2.Fragment 生命周期: 首页 最新文章 在线课程 业界 开发 ...
- Android Fragment应用实战,使用碎片向ActivityGroup说再见
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/13171191 现在Fragment的应用真的是越来越广泛了,之前Android在3 ...
- Android Fragment完全解析
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8881711 我们都知道,Android上的界面展示都是通过Activity实现的, ...
随机推荐
- SQL Sever 2008性能分析之执行计划
一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试 2的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<Inside Microsoft SQL ...
- 【Android测试】【第十六节】Instrumentation——初识+实战
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5503645.html 前言 有朋友给我留言说,能否介绍一下 ...
- Objective-C 编码建议
Objective-C 是 C 语言的扩展,增加了动态类型和面对对象的特性.它被设计成具有易读易用的,支持复杂的面向对象设计的编程语言.它是 Mac OS X 以及 iPhone 的主要开发语言. C ...
- LeetCode Flatten 2D Vector
原题链接在这里:https://leetcode.com/problems/flatten-2d-vector/ 题目: Implement an iterator to flatten a 2d v ...
- vim - Highlight unwanted spaces
http://vim.wikia.com/wiki/VimTip396 precondition: set hlsearch" Show all tabs:/\t" Show tr ...
- 物理主机win 7系统迁移至VMware ESXI服务器
一.实验环境如下图所示: 二.实验要求(如上图所示) 通过 计算机B (IP:10.8.9.18) 将 计算机A (IP:10.8.9.155) 迁移到 服务器(IP:10.8.9.161) 三.实 ...
- iOS,iPhone各机型设备号,屏幕宽高,屏幕模式
//获取设备型号 NSString *DeviceModel= [[UIDevice currentDevice] model]; //获取设备系统版本号 NSString *DeviceIOSVer ...
- WEB压力测试工具Pylot试用
Pylot介绍 转载自[http://www.freehao123.com/pylot-web/] 为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发 ...
- JAVA:NIO初步了解
简介: Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式. Java NIO: Ch ...
- 20145320 《Java程序设计》第10周学习总结
20145320 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义 ...