转载请注明:http://www.cnblogs.com/igoslly/p/6911165.html

由于最近废寝忘食地在开发App,没来得及及时做总结,没有用很高级的部件,勉强也使用一些功能完成了自己的第一个App,撒花~~~

接下来都是自己在开发中使用后的一些经验,也是和他人学习实践后的成果,主要是关于Fragment。

使用Fragment传递

添加Fragment

     添加 Fragment 有静态添加 & 动态添加两种方式,
静态添加是在 Layout 布局中添加 <Fragment> 控件,由于可以设置 id,则可通过 id 寻找
<Fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment1"/>

    动态添加fragment则完全在程序中定义添加
添加同时设定 TAG,通过 TAG 寻找实例(见后 Transaction)
// 对activity中的Fragment进行管理,需要通过Fragment Manager
FragmentManager manager = getFragmentManager();
manager.findFragmentById(); //根据ID查找
manager.findFragmentByTag();//根据TAG查找
manager.getFragments();//获取所有被ADD进Activity中的Fragment

 


Fragment Manager & Transaction

FragmentManager
,获取当前Activity的所有Fragment,形成fragment栈
FragmentTransaction,则可以管理当前的Fragment
Transcation 控制 Fragment 的显示、添加、替换等等,如 add / remove / replace
commit() 对操作的 Fragemnt 提交到系统,进行显示
replace(R.id.content_frame,fragment).commit();  //替换——删除添加操作
add(R.id.container,fragment1,String tag); //添加fragment,并设置动态查找TAG
remove(fragment1); //删除
      故而 Fragment 常被用于导航栏的切换内容,每点击导航栏不同图标,系统便调用响应的 Fragment 布局和内容,较为方便



Activity或Fragment向Fragment之间的参数传递

Bundle args = new Bundle();
args.put("value_key",value);

value_key 是在传输读取中约定的关键词,传输值可以为多种类型,int,String,Array等等
Fragment fragment = new Fragment();
fragment.setArguments(args); //将bundle传给fragment

fragment 读取值
red = getArguments().getInt("value_key1");
yellow = getArguments().getString("value_key2");

当需要从 Fragment 返回原活动时,需要设置 fragment 连接

aheadDialogue.setTargetFragment(CompetitionFragment.this,REQUEST_CODE);
getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment1).addToBackStack(null).commit();
getFragmentManager().popBackStack(); //返回
 
原Fragment接收返回值,在onActivityResult进行定义
request_code 是用户自定义 integer
resultCode 通常是活动状况,是否正常结束

public void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
// 可判断不同requestCode接受不同返回值操作
if (requestCode==0x1001) {
if (resultCode != Activity.RESULT_OK) { //这里再对activity状态进行判断
return;
} else {
hitPlayer = data.getStringExtra("hitplayer");
hitNumber = data.getIntExtra("hitnumber", 0);
}
}
if (requestCode==0x1111) {
//blablabla
}
}

推荐介绍Fragment挺详细的blog:http://blog.csdn.net/harvic880925/article/details/44927375

本笔记内容均为个人学习整理,转载请注明博客园-igoslly

Android开发笔记(10)——使用Fragment传递的更多相关文章

  1. [置顶] Android开发笔记(成长轨迹)

    分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...

  2. 【转】Android开发笔记(序)写在前面的目录

    原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

  3. Android开发笔记——以Volley图片加载、缓存、请求及展示为例理解Volley架构设计

    Volley是由Google开源的.用于Android平台上的网络通信库.Volley通过优化Android的网络请求流程,形成了以Request-RequestQueue-Response为主线的网 ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述

    1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用

    1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...

  7. Android开发笔记:打包数据库

    对于数据比较多的控制一般会加入SQLite数据库进行数据存储,在打包时这些数据库是不自动打包到apk中的,如何创建数据库呢 方法1:将创建数据库的sql语句在SQLiteHelper继承类中实现,在第 ...

  8. Android开发笔记--hello world 和目录结构

    原文:Android开发笔记--hello world 和目录结构 每接触一个新东西 都有一个hello world的例子. 1.新建项目 2.配置AVD AVD 没有要新建个,如果不能创建 运行SD ...

  9. [APP] Android 开发笔记 003-使用Ant Release 打包与keystore加密说明

    接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genk ...

  10. [APP] Android 开发笔记 002-命令行创建默认项目结构说明

    接上节:[APP] Android 开发笔记 001 4. 默认项目结构说明: 这里我使用Sublime Text 进行加载.

随机推荐

  1. Mac下对Android apk反编译

    在Mac上进行反编译apk,需要三个工具,分别为(附下载地址): apktool,下载Mac版 作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看 dex2jar,下载最新的即可,目前是2. ...

  2. node.js开发环境配置

    node.js是什么 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  3. 使用vscode,新建.vue文件,tab自动生成vue代码模板

    第一步: 新建模板并保存 文件 --> 首选项 --> 用户代码片段 --> 输入vue,选择vue.json -->复制 第三步中的模板内容中内容保存 第二步: 添加配置,让 ...

  4. 单层gmetad高可用

    虽然gmetad可以多层,但是层层gmetad都需要开启gweb,还是很麻烦.如果只是担心一个gmetad不安全,可以做成gmetad高可用,但是我还不知道有没有想hadoop ha那样自动failo ...

  5. ajax学习----json,前后端交互,ajax

    json <script> var obj = {"name": "xiaopo","age": 18,"gender ...

  6. 【codeforces 801B】Valued Keys

    [题目链接]:http://codeforces.com/contest/801/problem/B [题意] 定义一个对两个字符串x,y的f(x,y)函数; 返回的是一个字符串; 这个返回的字符串的 ...

  7. ansible common modules

    ##Some common modules[cloud modules] [clustering modules] [command modules]command - executes a comm ...

  8. noip模拟赛 黑骑士

    题目描述江爷爷给你出了一道题:给你一个图,保证每个点最多属于一个简单环,每个点度数最多为3,求这个图有多少“眼镜图形个数”保证图联通哦~其中“眼镜图形个数”,定义为三元组(x,y,S),其中x和y表示 ...

  9. nyoj_71_独木舟上的旅行_201312122051

    独木舟上的旅行 时间限制:3000 ms  |           内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能 ...

  10. MySQL终端(Terminal)命令基本操作(转)

    注意:MySQL数据库命令不区分大小写.但在MAC的终端,如果你想使用tab自动补全命令,那么你就必须使用大写,这样MAC的终端才会帮你补全命令,否则你按N遍tab都不会有响应. 1.数据库(data ...