http://blog.csdn.net/u011730649/article/details/43227721

今天在项目中使用Fragment的时候出现这样的错误:

01-28 10:53:34.794: E/AndroidRuntime(8703): FATAL EXCEPTION: main
01-28 10:53:34.794: E/AndroidRuntime(8703): Java.lang.IllegalStateException: Fragment already active
01-28 10:53:34.794: E/AndroidRuntime(8703): at Android.app.Fragment.setArguments(Fragment.java:691)
01-28 10:53:34.794: E/AndroidRuntime(8703): at com.hb56.DriverReservation.android.activity.MainActivity.setCurTab(MainActivity.java:239)
01-28 10:53:34.794: E/AndroidRuntime(8703): at com.hb56.DriverReservation.android.fragment.PlanReservationFragment$1.onItemClick(PlanReservationFragment.java:130)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.widget.AbsListView.performItemClick(AbsListView.java:1177)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2894)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.widget.AbsListView$1.run(AbsListView.java:3657)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.os.Handler.handleCallback(Handler.java:800)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.os.Handler.dispatchMessage(Handler.java:100)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.os.Looper.loop(Looper.java:194)
01-28 10:53:34.794: E/AndroidRuntime(8703): at android.app.ActivityThread.main(ActivityThread.java:5400)
01-28 10:53:34.794: E/AndroidRuntime(8703): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 10:53:34.794: E/AndroidRuntime(8703): at java.lang.reflect.Method.invoke(Method.java:525)
01-28 10:53:34.794: E/AndroidRuntime(8703): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-28 10:53:34.794: E/AndroidRuntime(8703): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-28 10:53:34.794: E/AndroidRuntime(8703): at dalvik.system.NativeStart.main(Native Method)

浏览了很多论坛里解决的方法,大致的分析如下:

首先Fragment的传参方式是这样的:

设置参数:

  1. ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(""));
  2. SearchProjectFragment sf = new SearchProjectFragment();
  3. Bundle bundle = new Bundle();
  4. bundle.putString("key", Projsid);
  5. sf.setArguments(bundle);
  6. ft.add(R.id.fragmentRoot, sf, SEARCHPROJECT);
  7. ft.addToBackStack(SEARCHPROJECT);
  8. ft.commit();

在Fragemnt取参数:

getArguments().getString("key");

发现Fragment被隐藏后,不能在使用setArguments()传递,否则就会报java.lang.IllegalStateException java.lang.IllegalStateException: Fragment already active异常主要是使用setArguments()传递参数导致的。 在 Fragment 没有被添加到 FragmentManager。

java.lang.IllegalStateException: Fragment already active异常主要是使用setArguments()传递参数导致的。
在 Fragment 没有被添加到 FragmentManager 之前,我们可以通过 Fragment.setArguments() 来设置参数,并在 Fragment 中,使用 getArguments() 来取得参数。在 Fragment 被添加到 FragmentManager 后,一旦被使用,我们再次调用 setArguments() 将会导致 java.lang.IllegalStateException: Fragment already active 异常。
解决方法:可以使用setter和getter Fragment的属性方法进行数据的存储和获取。

【转】解决Fragment already active方法的更多相关文章

  1. 经验解决Fragment被Replace后仍旧可见的问题

    经验解决Fragment被Replace后仍旧可见的问题 网上问的问题,大多会提到替换了Fragment而发现之前被替换的仍旧显示在那里.我个人使用android 2.3 +support 开发包,在 ...

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

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

  3. Android解决Fragment多层嵌套时onActivityResult无法正确回调的问题

    前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候, ...

  4. 尝试解决IIS问题一些方法

    尝试解决IIS问题一些方法 在控制面板中安装相关功能.添加相关角色 Win下注册IIS: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_re ...

  5. adobe media encoder cc 2015在win10中打开崩溃的解决办法(该方法同样适用于adobe其他产品)

    今天就给大家讲讲adobe media encoder cc 2015启动的时候崩溃的问题,先来看看现象.就是这样了,然后我在网上找了很多办法,有的方法已经过时了,也或者因为现在新版本的adobe m ...

  6. extjs 解决使用store.sync()方法更新item有时不触发后台action的问题

    问题描述: extjs 解决使用store.sync()方法更新item有时不触发后台action,不出发后台action的原因是item的字段值没有变化 解决方法: item.setDirty(tr ...

  7. pytorch预训练模型的下载地址以及解决下载速度慢的方法

    https://github.com/pytorch/vision/tree/master/torchvision/models 几乎所有的常用预训练模型都在这里面 总结下各种模型的下载地址: 1 R ...

  8. Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在 ...

  9. SQL Server中解决死锁的新方法介绍

    SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ...

随机推荐

  1. unity, sprite atlas

    一, Sprite Packer 可以直接在unity里放碎图,只要将Texture Type选为Sprite(2D and UI),Sprite Mode选为Single,再把想打在一张大图里的碎图 ...

  2. arcgis9.3 执行python文件

    1) 打开Python GUI 2) 选择菜单“File->Open”,打开你要执行的*.py文件 3) 选择菜单“Run->Run Module”,运行python文件 4)运行结果

  3. 【Android】Handler使用入门

    本讲内容:Handler使用入门 当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上 ...

  4. Java并发编程-关卡

    CyclicBarrier 直译过来叫循环栅栏,它主要的方法就是一个:await().await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程.当计数减至0时,阻塞解除,所有在此 Cycli ...

  5. 设置UIImage 圆角

    //设置UIImage圆角 @interface UIImage(UIRoundedRectImage) + (id) createRoundedRectImage:(UIImage*)image s ...

  6. javascript面向对象实例

    非私有属性 function Student(name, gender, age, grade, teacher){ this.name = name; this.gender = gender; t ...

  7. 初识---Qt解析XML文件(QDomDocument)

    关于XML及其使用场景不在此多做介绍,今天主要介绍Qt中对于XML的解析.QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢?  DOM(Document Ob ...

  8. Sublime Text 3快捷键

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...

  9. 学习内容:Html5+Axure原型设计

    今日主要在http://www.runoob.com/html/html5-intro.html和http://www.imooc.com/learn/9网站上学习Html的知识,head.title ...

  10. Hadoop学习笔记3---安装并运行Hadoop

    本文环境是在Ubuntu10.04环境下运行的. 在Linux上安装Hadoop之前,首先安装两个程序: 1.JDK1.6(或更高版本).Hadoop是用Java编写的程序,Hadoop编译及MapR ...