出现这个问题的原因是因为使用的transcation.replace(fragmentTwo);的方式进行碎片切换的。

解决方案是使用add和show、hide方法组合实现碎片的切换(应该是显示、隐藏)。

我这里使用的是RadioButton控件的Id值。

/**
* 切换碎片:使用show和hide以及add,不要使用replace(频繁来回切换的时候容易发生内存溢出的错误)
*/
public void onTabSelected(int radioGroupId) {
//开启一个事务
FragmentTransaction transcation = fragmentManager.beginTransaction();
//设置淡入淡出效果
transcation.setCustomAnimations(android.R.animator.fade_in,android.R.animator.fade_out);
//隐藏全部碎片
hideFragments(transcation);
//有选择的显示碎片
switch (radioGroupId) { case R.id.home:
if(fragmentOne == null){
fragmentOne = new FragmentOne();
transcation.add(R.id.center_layout, fragmentOne);
}else{
transcation.show(fragmentOne);
}
break; case R.id.category:
if(fragmentTwo == null){
fragmentTwo = new FragmentTwo();
transcation.add(R.id.center_layout, fragmentTwo);
}else{
transcation.show(fragmentTwo);
}
break; case R.id.collect:
if(fragmentThree == null){
fragmentThree = new FragmentThree();
transcation.add(R.id.center_layout, fragmentThree);
}else{
transcation.show(fragmentThree);
}
break; case R.id.setting:
if(fragmentFour == null){
fragmentFour = new FragmentFour();
transcation.add(R.id.center_layout, fragmentFour);
}else{
transcation.show(fragmentFour);
}
break; default:
break;
}
transcation.commitAllowingStateLoss();
} /**隐藏全部碎片
* 需要注意:不要在OnResume方法中实例化碎片,因为先添加、显示,才可以隐藏。否则会出现碎片无法显示的问题*/
private void hideFragments(FragmentTransaction transaction) {
if (null != fragmentOne) {
transaction.hide(fragmentOne);
}
if (null != fragmentTwo) {
transaction.hide(fragmentTwo);
}
if (null != fragmentThree) {
transaction.hide(fragmentThree);
}
if (null != fragmentFour) {
transaction.hide(fragmentFour);
}
}

需要注意,不要在OnResume方法中实例化碎片。

// 存放底部菜单的各个RadioButton的Id值
private int[] radioButtonIds = {R.id.home,R.id.category,R.id.collect,R.id.setting}; @Override
protected void onResume() { //切换碎片
onTabSelected(radioButtonIds[0]); super.onResume();
}

Fragment碎片频繁来回切换的时候报java.lang.IllegalStateException: No activity的更多相关文章

  1. maven单元测试报java.lang.IllegalStateException: Failed to load ApplicationContext

    报这个异常java.lang.IllegalStateException: Failed to load ApplicationContext的时候,通常是因为applicationContent.x ...

  2. response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路

    今天在进行代码开发的时候,出现了 java.lang.IllegalStateException异常,response.sendRedirect("./DEFAULT.html") ...

  3. [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常

    转载:http://blog.csdn.net/winson_jason/article/details/20357435 下边两个问题,是在开发中碰到的一些关于Fragment的偶发性的问题,今天时 ...

  4. 如何进行fragment中的来回切换?

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解如何进行fragment中的来回切 ...

  5. eclipse启动报错java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' befo

    报错: java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invo ...

  6. eclipse 运行报java.lang.OutOfMemoryError: PermGen space解决方法

    一.在window下eclipse里面Server挂的是tomcat6,一开始还是以为,tomcat配置的问题,后面发现,配置了tomcat里面的catalina.bat文件,加入 set JAVA_ ...

  7. Tomcat报java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler

    最近在生产环境部署Tomcat的时候,在启动的时候,在控制台报"java.lang.ClassNotFoundException: 1catalina.org.apache.juli.Fil ...

  8. idea生成JAVADOC 报java.lang.IllegalArgumentException解决方案[终极]

    idea生成javadoc文档,总是会报  java.lang.IllegalArgumentException     at sun.net.www.ParseUtil.decode(ParseUt ...

  9. Eclipse下执行main函数报java.lang.NoClassDefFoundError的解决

    今天执行eclipse下的一个java类,无论run还是debug,都报java.lang.NoClassDefFoundError.而且把main中函数都注释掉,执行还是报一样的错. 检查了一下这个 ...

随机推荐

  1. cmd for 用法

    1:for命令及变量 基本格式: FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数 ...

  2. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...

  3. json包的loads dumps区分

    符合json格式的字符串    --(json.laods)-->     json(字典形式或是列表形式)    --(json.dumps)-->    符合json格式的字符串

  4. 【JS】Intermediate1:The DOM

    1.DOM(The Document Object Model) A way to manipulate the structure and style of an HTML page. It rep ...

  5. HDU 1754 I Hate It 线段树 单点更新 区间最大值

    #include<iostream> #include<string> #include<algorithm> #include<cstdlib> #i ...

  6. 关于Windows Azure的常见问题-一般问题FAQ

    一般问题 什么是Windows Azure? Windows Azure 是一个灵活而开放的云平台,通过该平台,您可以在数据中心快速生成.部署和管理应用程序.Windows Azure 支持所有主流操 ...

  7. json里的日期字符串 怎么 转换成 javascript 的 Date 对象?

    “/Date(1232035200000)/” 怎么转换成  javascript 的 Date 对象 做法:new Date(+/\d+/.exec(value)[1]); value就是json字 ...

  8. 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络

    1]前往这里下载你喜欢的语言的组策略模板 后缀为.adm (其他的文件自己看 https://docs.google.com/viewer?a=v&pid=sites&srcid=Y2 ...

  9. SignalR Supported Platforms -摘自网络

    SignalR is supported under a variety of server and client configurations. In addition, each transpor ...

  10. 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)

    http://blog.csdn.net/leixiaohua1020/article/details/25430449 本文介绍一个最简单的基于FFMPEG的音频编码器.该编码器实现了PCM音频采样 ...