FragmentActivity + Fragment(通过hide和show来显示fragment) + Fragment(通过viewpager来显示fragment)

在Activity中

   //开启事务
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); //添加首页
ft.add(R.id.content,network_fragment).commit();
 FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction(); //隐藏
ft.hide(mFragments[mIndex]);
//判断是否添加
if(!mFragments[index].isAdded()){
ft.add(R.id.content,mFragments[index]).show(mFragments[index]);
}else {
ft.show(mFragments[index]);
} ft.commit();

在布局中

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/one_hundred_sixty"
android:background="@color/mx_plus_background" />
<include
android:id="@+id/id_ly_bottombar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
layout="@layout/leftbottombar" />
</FrameLayout>

然后在fragment中会添加一个viewpager来再添加几个fragment

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_back"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <com.roadrover.libaudiosettings.widget.InterceptTouchViewPager
android:id="@+id/id_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/sixty_px"
android:background="@drawable/content_bottom"/>
<include
android:id="@+id/id_ly_bottombar"
layout="@layout/bottombar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
在fragment中的ViewPager在添加新的fragment,
设置参数的时候最好不要用setTargetFragment,自己定义一个set方法(比如setInitFragment)就可以了,
设置manager时,要用getChildFragmentManager(fragment+fragment用这个),不能用getSupportFragmentManager(activity+fragment才用这个)
这是为了避免在我切换语言之后,viewpager中的fragment显示不出来的bug。
mSpeakerFragment = new SpeakerFragment();
mSpeakerFragment.setInitFragment(EffectFragment.this); //不能直接设置fragment,耦合性太强,要使用接口回调 mAdapter = new FragmentPagerAdapter(getChildFragmentManager()) { // @Override
public Fragment getItem(int arg0) {
Logcat.d(TAG, "getItem = " + arg0);
return mFragments.get(arg0);
} @Override
public int getCount() { return mFragments.size();
} };
 

FragmentStatePagerAdapter  getChildFragmentManager

----------------------------------------------------------

不要使用有参构造的fragment,不要使用setTargetFragment,

最好能不在fragment的onCreateView中new对象,因为在viewpager中,只会保持fragment一前一后,超出了,就会走onDestroyView(onDestroy不走)。

----------------------------------------------------------

/**
* 状态检测 用于内存不足的时候保证fragment不会重叠
*
* @param savedInstanceState
*/
private void stateCheck(Bundle savedInstanceState) {
if (savedInstanceState == null) {
fm = getFragmentManager();
FragmentTransaction fts = fm.beginTransaction();
AnimationFragment af = new AnimationFragment();
mContent = af;
fts.add(R.id.content_frame, af);
fts.commit();
} else {
AnimationFragment af = (AnimationFragment) getFragmentManager()
.findFragmentByTag(tags[]);
PlainFragment pf = (PlainFragment) getFragmentManager()
.findFragmentByTag(tags[]);
RecordFragment rf = (RecordFragment) getFragmentManager()
.findFragmentByTag(tags[]);
InformationFragment inf = (InformationFragment) getFragmentManager()
.findFragmentByTag(tags[]);
TestingFragment tf = (TestingFragment) getFragmentManager()
.findFragmentByTag(tags[]);
getFragmentManager().beginTransaction().show(af).hide(pf).hide(rf)
.hide(inf).hide(tf).commit();
}
}

FragmentActivity + Fragment + Fragment使用过程中出现的bug的更多相关文章

  1. ssd运行过程中遇到的bug

    1.出现以下错误: 没有添加环境变量: https://github.com/weiliu89/caffe/issues/4 可以看到当前PYTHONPATH不再ssd1里面,所以需要修改,修改之后就 ...

  2. AndroidStudio使用过程中遇到的bug

    Ref:http://www.cnblogs.com/jingmo0319/p/5781878.html 1. Error:Execution failed for task ':app:transf ...

  3. C# CefSharp MemoryStreamResponseFilter这个类使用过程中遇到的bug,dataIn.CopyTo(dataOut)异常

    使用这个类,可以获取请求的所有数据,可用来下载网站的图片.js等 cef给出的源码 dataIn.CopyTo(dataOut);这句代码,有时候会有问题.问题是这个:dataIn.length 会大 ...

  4. 记录一个使用HttpClient过程中的一个bug

    最近用HttpClient进行链接请求,开了多线程之后发现经常有线程hang住,查看线程dump java.lang.Thread.State: RUNNABLE at java.net.Socket ...

  5. Hexo之NexT配置过程中遇到的问题

    写在前面 从搭建到布置到GitHub花费时间大概用了五个小时,中间删除repo N次,localhost运行正常,git上出现过404页面.若干次README.md页面,本文将简略介绍搭建过程,主要内 ...

  6. android FragmentActivity+FragmentTabHost+Fragment框架布局

    这周比较闲,计划系统的学习一下android开发,我本是一名IOS程序员,对手机开发还是有自己的一套思路的, 固这套思路用到我当前学android上了,先选择从Main页面的tabbar部分代码入手, ...

  7. app包中的fragment和v4包中的fragment的使用的区别

    app包中的fragment和v4包中的fragment的使用的区别 1.尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的 2.androi ...

  8. FragmentActivity与Fragment两者交互方法简介(转)

    FragmentActivity与Fragment两者交互方法简介 分类: Fragment 2014-07-07 18:17 88人阅读 评论(0) 收藏 举报 在Android4.0后很多时候我们 ...

  9. Android -- FragmentActivity添加Fragment的序列图

    FragmentActivity添加Fragment的序列图

随机推荐

  1. [Swift]LeetCode501. 二叉搜索树中的众数 | Find Mode in Binary Search Tree

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...

  2. [Swift]LeetCode876. 链表的中间结点 | Middle of the Linked List

    Given a non-empty, singly linked list with head node head, return a middle node of linked list. If t ...

  3. Hibernate框架笔记04HQL_QBC查询详解_抓取策略优化机制

    目录 1. Hibernate的查询方式 1.1 方式一:OID查询 1.2 方式二:对象导航查询 1.3 方式三:HQL方式 1.4 方式四:QBC查询 1.5 方式五:SQL查询 2. 环境搭建 ...

  4. HBase之Table.put客户端流程(续)

    上篇博文中已经谈到,有两个流程没有讲到.一个是MetaTableAccessor.getRegionLocations,另外一个是ConnectionImplementation.cacheLocat ...

  5. 深入解析 H.265 编码模式,带你了解Apple全面推进H.265的原因

    今天我们聊聊视频编码.视频文件亘古以来存在一个矛盾:高清画质和视频体积的冲突,相同编码标准下,视频更高清,视频体积更大.因此,应用更先进的视频编码标准,降低视频体积,可以大幅降低网站的流量消耗. 目前 ...

  6. C++ 断言

    assert宏 (基本概念与用法整理) assert宏的深入学习 1.运行时断言 1.1.assert属于运行时断言,可以在运行时判断给定条件是否为真,如果为真则什么也不做,否则打印一跳错误信息,然后 ...

  7. 《你必须知道的.NET》读书实践:一个基于OO的万能加载器的实现

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.关于万能加载器 简而言之,就是孝顺的小王想开发一个万能程序,可以一键式打开常见的计算机资料,例如: ...

  8. exec族函数详解及循环创建子进程

    前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特 ...

  9. Go基础系列:map类型

    Go里的map用于存放key/value对,在其它地方常称为hash.dictionary.关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到val ...

  10. Android Nine-patch(.9.png)小结

    最近在项目开发过程中,因为界面布局美化的需要开始接触到.9.png,无论是Goolge官方文档还是网上其他资料, 都给出了很多关于.9.png的基本介绍,.9.png基础文章推荐以下几篇: Googl ...