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. JS面向对象组件(五) -- 复制对象(拷贝继承)

    研究到这儿,竟然出现了一个面试题目 var a = { name : '小明' }; var b = a; b.name = '小强'; alert( a.name ); 结果必然是“小强”,原因是对 ...

  2. Shell教程4-Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: 复制纯文本新窗口   #!/bin/bash a=10 echo -e & ...

  3. WebAPI 时代

    引言 小编跳槽到现任公司有一段时间,在这个公司对于小编是各种挑衅啊,也颠覆了小编之前的编程生涯,在前面 的博客中小编隆重介绍了angularJS这个大神,这个让我不堪回首的两周,真是黑色天使啊!从现在 ...

  4. LoadRunner学习记录--安装遇到的问题一

    安装过程中的出现了此计算机上缺少vc2005_sp1_with_atl_fix_redist 需要到这个目录下lrunner\En\prerequisites\vc2005_sp1_redist\ 手 ...

  5. 把两个DataTable连接起来,相当于Sql的Inner Join方法

    在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法 作者:浪漫十一狼在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inne ...

  6. 【LeetCode】217 & 219 - Contains Duplicate & Contains Duplicate II

     217 - Contains Duplicate Given an array of integers, find if the array contains any duplicates. You ...

  7. 配置spring管理的bean的作用域

    .singleton 在每一个spring Ioc容器中一个bean定义只有一个对象实例.默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init = "tru ...

  8. C# 关闭 Excel进程

    namespace ExcelTest   {       class DataOutput       {           static void Main(string[] args)     ...

  9. PV3D学习笔记-导入DAE模型

      网上关于PV3D导入DAE模型的例子都非常多,可惜我研究了半天,一个都没成功,或者是破面问题,或者是贴图不显示,再或者贴图乱掉了.今天晚上终于搞定,心得发上来. 制作模型的软件是SketchUp ...

  10. IIS启动出错解决方法

    IIS出现server application error,最终解决办法2007年10月30日 星期二 20:38Server Application Error The server has enc ...