android 63 Fragment
#Fragment 是3.0平板才引入进来的,3.0之后就加入了Fragment。原来是一个屏幕就是一个Activity,
>片段,碎片
1. 定义某一个片段的界面 继承Fragment类
public class BlueToothFragment extends Fragment {}
2. 重写Fragment里面的方法
显示Fragment的ui,把布局文件转化成view对象
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.blue_tooth_layout, null);
}
3. 获取Fragment管理器
fm = getFragmentManager();
4. 动态的修改界面
f1 = new BlueToothFragment();//先把要显示的f1new出来
FragmentTransaction ft = fm.beginTransaction();//开启事务
ft.replace(R.id.fl_container, f1);
ft.commit();//保证了 要么同时成功,要么同时失败
主页面:
<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:orientation="vertical" 垂直排列
tools:context=".MainActivity" > <FrameLayout
android:id="@+id/fl_container"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="0dip" >
</FrameLayout> <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#22000000"
android:orientation="horizontal" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="setting01"
android:text="蓝牙设置" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="setting02"
android:text="声音设置" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="setting03"
android:text="显示设置" />
</LinearLayout> </LinearLayout>
3个fragment:
蓝牙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" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是蓝牙设置"
android:textAppearance="?android:attr/textAppearanceLarge" /> <RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" /> <ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ToggleButton" /> </LinearLayout> 显示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" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是显示设置"
android:textAppearance="?android:attr/textAppearanceLarge" /> <CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" /> <RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" /> </LinearLayout> 声音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" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是声音设置"
android:textAppearance="?android:attr/textAppearanceLarge" /> <CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" /> </LinearLayout>
主Activity:
package com.itheima.fragementdemo; import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View; public class MainActivity extends Activity {
private FragmentManager fm;//管理所有Fragment,更新页面的时候要么同时更新成功要么同时更新失败所以有事物,
BlueToothFragment f1;
ShowFragment f3;
SoundFragment f2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm = getFragmentManager();
initFragment();
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f1);
ft.commit();//保证了 要么同时成功,要么同时失败
} private void initFragment() {
f1 = new BlueToothFragment();//Fragment是直接new出来的
f2 = new SoundFragment();
f3 = new ShowFragment();
} //蓝牙点击事件
public void setting01(View view) {
//事物开始的时候实例化ft,事物结束的时候提交事物,提交后事物就过期了,所以每次都要初始化ft
FragmentTransaction ft = fm.beginTransaction();//
ft.replace(R.id.fl_container, f1);
ft.commit();//保证了 要么同时成功,要么同时失败,保证了页面不花屏。
}
//声音点击事件
public void setting02(View view) {
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f2);
ft.commit();//保证了 要么同时成功,要么同时失败
}
//显示点击事件
public void setting03(View view) {
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f3);
ft.commit();//保证了 要么同时成功,要么同时失败
} }
3个fragment java代码
蓝牙: package com.itheima.fragementdemo; import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class BlueToothFragment extends Fragment {
//显示Fragment的ui的,不需要在清单文件配置任何内容
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.blue_tooth_layout, null);
}
} 声音 package com.itheima.fragementdemo; import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class SoundFragment extends Fragment {
//显示Fragment的ui的
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.sound_layout, null);
}
} 显示 package com.itheima.fragementdemo; import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class ShowFragment extends Fragment {
//显示Fragment的ui的
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.show_layout, null);
}
}
##Fragment的向下兼容,兼容低版本
>使用support-v4的jar包
>1. MainActivity extends FragmentActivity
>2. 所有的fragment的导包, android.support.v4.app.Fragment
>3. getSupportFragmentManager();
>4. 注意两个导包
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
package com.itheima.fragementdemo; import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View; public class MainActivity extends FragmentActivity {
private FragmentManager fm;
BlueToothFragment f1;
ShowFragment f3;
SoundFragment f2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//为了向下版本兼容采用v4包里面的FragmentManager
fm = getSupportFragmentManager();
initFragment();
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f1);
ft.commit();//保证了 要么同时成功,要么同时失败
} private void initFragment() {
f1 = new BlueToothFragment();
f2 = new SoundFragment();
f3 = new ShowFragment();
} //蓝牙
public void setting01(View view) {
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f1);
ft.commit();//保证了 要么同时成功,要么同时失败
}
//声音
public void setting02(View view) {
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f2);
ft.commit();//保证了 要么同时成功,要么同时失败
}
//显示
public void setting03(View view) {
//事务的概念
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fl_container, f3);
ft.commit();//保证了 要么同时成功,要么同时失败
} }
实现效果:
android 63 Fragment的更多相关文章
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
2014-05-18 来源:Android:Activity+Fragment及它们之间的数据交换(一) 简介: 为什么要用Fragment?使用Fragment可以在一个Acti ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- android之Fragment基础详解(一)
一.Fragment的设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕比手机的大得多,有 ...
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3364728.html 我前两天写过一篇博客<Android使用Fragment来 ...
- android之fragment的使用
android中的fragment与html中的div很类似,下图中通过左边的按键可以控制右边的显示内容.右边的内容就是一个fragment,通过点击按键来控制fragment的实现. 工程目录 需要 ...
- Android使用Fragment定义弹出数字键盘
fragment主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln ...
随机推荐
- 小波变换 C++ opencv 实现
小波变换 C++ opencv 实现 小波简介: http://www.blogbus.com/shijuanfeng-logs/221293135.html 源码: /// 小波变换 Mat W ...
- 【技术贴】解决vss中提交pdf下载打开空白乱码
vss客户端需要安装一个Vss2005的补丁程序,而且之前上传的pdf文件重新删掉,再次上传进Vss中,再下载打卡就ok了. 补丁名称vs80-kb943847-x86-intl.exe 别人的csd ...
- 【网络流24题】 No.10 餐巾计划问题 (线性规划网络优化 最小费用最大流)
[题意] 一个餐厅在相继的 N 天里, 每天需用的餐巾数不尽相同. 假设第 i 天需要 ri 块餐巾(i=1,2,-, N). 餐厅可以购买新的餐巾,每块餐巾的费用为 p 分:或者把旧餐巾送到快洗部, ...
- [转贴]怎样在LINQ实现 LEFT JOIN 或者RIGHT JOIN
In this post let us see how we can handle Left Join and Right Join when using LINQ. There are no key ...
- relink:在Linux/UNIX平台上relink Oracle软件(转)
当操作系统升级后.操作系统打完补丁后.安装完Oracle补丁之后和relink过程中出现问题时,都会用到relink方法来保证Oracle软件的正常使用.本文介绍一下relink方法的使用. 1. ...
- JS 日期操作类
/* 日期对象格式化为指定日期格式 */Date.prototype.format = function (format) { var o = { "M+": this.getMo ...
- 2.5.5 使用DatePickerDialog, TimePickerDialog
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- 能让你成为更优秀程序员的10个C语言资源
能让你成为更优秀程序员的10个C语言资源 本文由 伯乐在线 - archychu 翻译自 mycplus.欢迎加入 技术翻译小组.转载请参见文章末尾处的要求. 一些人觉得编程无聊,一些人觉得它很好玩. ...
- POJ2676 Sudoku(dfs)
题目链接. 题目大意: 就是数独游戏.横竖,每一个9宫方块,必须有1~9,且不重复. 分析: 直接DFS.一开始在原图上搜,会TLE.把要补全的空格,放入数组,这样就不用遍历整个图寻找要填的空格了. ...
- [DP] LCS小结
额..失误.. LCS是Longest Common Subsequence的缩写,即最长公共子序列.一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列. DP.O ...