1:注意事项
  3.0以前的Android 版本要使用FragmentActivity 来装载Fragment ,使用到support v4包。
  3.0以后的版本可以直接在Activity里面添加Fragment。
2:Fragment也有生命周期,继承Fragment 要重新onCreateView方法,另外onResume,onDestroyView 等方法根据需要填写。
3:在activity中加入Fragment有两种方法:布局和代码动态加入。布局加入和在布局加入view,button等用法一样。
4:在Activity中动态加入Fragment google 教程http://developer.android.com/training/basics/fragments/fragment-ui.html
// 创建一个Fragment实例
HeadlinesFragment firstFragment = new HeadlinesFragment();
            
            // In case this activity was started with special instructions from an Intent,
            // pass the Intent's extras to the fragment as arguments
            firstFragment.setArguments(getIntent().getExtras());
            
            // Add the fragment to the 'fragment_container' FrameLayout
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, firstFragment).commit();
5:一个Fragment替换另一个Fragment
ArticleFragment newFragment = new ArticleFragment();
//要传递给newFragment的信息,可以来自于其它Fragment
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(“xxxxx”);//一个字符串标识

// Commit the transaction
transaction.commit();

要想点击back可以返回上一个fragment ,transaction.addToBackStack(“xxxxx”);//一个字符串标识  这个必须有。
6:Fragment 替换另一个Fragment时 数据传递
例如:点击fragmentA 中的一个按钮 启动fragmentB ,FragmentActivity 是 activityFragment
(1)通过Intent传递数据
     Intent  intent = new Intent();
//把数据加入intent中
intent.putExtra("xxx", xxx);
intent.putExtra("xxx", xxx);     
......
activityFragment .setIntent(intent);
//启用事务,完成Fragment的转换。
FragmentTransaction transaction = activityFragment.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.xxx, fragmentB);
//不将被替换的fragment加入栈中,点击返回调用系统默认的方法onBackPress()时不会返回上一个fragment
transaction.addToBackStack("msg_fragment");
transaction.commit();
(2) 通过setfragment.setArguments(Bundle args)
Bundle bundle = new Bundle();
//往Bundle中放入数据
Bundle.put(xxxx);
.....
fragmentB.setArgument();
//启用事务,完成Fragment的转换。
FragmentTransaction transaction = activityFragment.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.xxx, fragmentB);
//不将被替换的fragment加入栈中,点击返回调用系统默认的方法onBackPress()时不会返回上一个fragment
transaction.addToBackStack("msg_fragment");
transaction.commit();
在fragmentB中 通过fragmentB.getArgument();方法获得Bundle,在取出数据。
7:关于Context 的使用
我在fragmentA创建一个自定义的dialog时 出现如下异常
06-24 14:34:52.147: E/AndroidRuntime(4853): FATAL EXCEPTION: main
06-24
14:34:52.147: E/AndroidRuntime(4853): java.lang.RuntimeException:
Unable to resume activity {xxx}: java.lang.RuntimeException: Unable to
resume activity {xxxxx.MsgActGroup}: java.lang.RuntimeException: Unable
to resume activity {xxxx/com...MsgFragmentAct}:
android.view.WindowManager$BadTokenException: Unable to add window --
token android.app.LocalActivityManager$LocalActivityRecord@4054d430 is
not valid; is your activity running?
情况是这样:fragmentActivity 是ActivityGroup的一个子Activity,fragmenA是fragmentActivity 的一个Fragment。这个异常可以翻译成:
fragmentA现在还处于运行状态吗?
可能是创建dialog时传入的context 即 fragmentA.getActivity() 即fragmentActivity 有问题。改成fragmentA.getActivity().getParent()
问题解决。

fragment 小结的更多相关文章

  1. Fragment小结

    Fragment是Android3.0之后增加的新特性,通常人们叫它碎片.可是,我认为把它理解成一个View模块比較好,尽管它不是继承自View.假设阅读过源代码就知道它是内置View对象从而实现Vi ...

  2. Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  3. Wix 安装部署教程(十) --来,用WPF做个漂亮的安装界面

    在上一篇中曾留下两个问题,.Net捆绑安装不触发以及路径选择的问题现在都已经解决,这段时间花的最多的地方还是WPF调样式上面,奈何WPF功力不够,暂时还是没有达到自己想要的效果.另外ViewModel ...

  4. bug_ _fragment的1

    =========  2   fragment小结 ???? ======== 1     fragment:java.lang.IllegalStateException: Can not perf ...

  5. android Fragment 用法小结

    Fragment 是android 3.0引入的新API,是作为Activity的子模块,必须嵌入Activity才能使用. Activity 与 Fragment的关系: 一.依附性: 1. Fra ...

  6. Android Fragment使用小结及介绍

    目录(?)[-] 一什么是Fragment 二Fragment的生命周期 三Fragment的两种添加方式addreplace 四两种添加方式性能比较 偶记得第一次接触Fragment,觉得好牛叉的组 ...

  7. 小结Fragment与FragmentPagerAdapter的生命周期及其关系

    本博客部分内容是来自http://blog.csdn.net/dreamzml/article/details/9951577 FragmentPagerAdapter FragmentPagerAd ...

  8. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  9. 对于Fragment的一些理解

    前言 Fragment想必大家不陌生吧,在日常开发中,对于Fragment的使用也很频繁,现在主流的APP中,基本的架构也都是一个主页,然后每个Tab项用Fragment做布局,不同选项做切换,使用起 ...

随机推荐

  1. (转)使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module

    使用不同版本的XCode出现的问题: fatal error: malformed or corrupted AST file: 'Unable to load module "/Users ...

  2. 《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》

    代码: keras:https://github.com/phdowling/abcnn-keras tf:https://github.com/galsang/ABCNN 本文是Wenpeng Yi ...

  3. 教你玩转产品管理系统iClap(PC端功能篇)

    之前和大家介绍了iClap的基础功能, 这一次针对PC端右侧的工具栏再做一个详细的介绍 随着版本的更新迭代,陆续会有更多工具和功能推出! 导航 为项目成员提供网址浏览访问导航服务,帮助项目成员快速查找 ...

  4. Python中的is和==的区别,==判断值是否相等,is判断地址是否一致

    Python中的is和==的区别 Python中的对象包含三要素:id.type.value. 其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是 ...

  5. python 文件操作 练习:把一个目录下的所有文件名,打印一下,不要包含后缀名

    #coding=utf-8 import osos.chdir('d:\\test2')file_list=os.listdir('.')print "file_list:",fi ...

  6. nginx的权限问题(Permission denied)解决办法

    nginx的权限问题(Permission denied)解决办法 一个nginx带多个tomcat集群环境,老是报如下错误:failed (13: Permission denied) while ...

  7. Linux中Postfix邮件安装Maildrop(八)

    Postfix使用maildrop投递邮件 Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc).投递和磁盘限额(Quota)功能. Maildrop是一个使用C ...

  8. 远程登录 dos命令

    1.桌面连接命令 mstsc /v: 192.168.1.250 /console 2.若需要远程启动所有Internet服务,可以使用iisreset命令来实现. 进入“命令提示符”窗口.在提示符后 ...

  9. (mac)阿里云ECS服务器配置过程

    -----首先本人是半只脚入门的iOS开发者,弄这个只是单纯想多学点东西. -----阿里云服务器的配置选择:既然是学习用的,最最基础的配置就行了.1M带宽,1核1G...这就不详述了.没啥可选的,( ...

  10. Js中String转int

    Js中String转int 方案一代码: Number(str) 方案二代码: //parseInt 方法都有两个参数, 第一个参数就是要转换的对象, 第二个参数是进制基数, 可以是 2, 8, 10 ...