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. Arduino中的数据类型范围

    注意int不是4字节而仅仅是2字节!!! int: -32,768 ~ 32,767 (2字节) long: 4字节 http://www.arduino.cc/en/Reference/Int

  2. reStructuredText

    reStructuredText 简明教程 060724 17:58 作者: Laurence 邮箱: 2999am@gmail.com ID: Kardinal @ Ubuntu.org.cn论坛 ...

  3. 构建 XCache 的基本步骤

    构建 XCache 的基本步骤 在开始之前,首先确保 PHP 正常安装并核实 phpize 是否位于 shell 的 PATH 下.同时,还需要一个 C 编译器,例如 GNU Compiler Col ...

  4. [python]使用pexpect模块进行批量scp

    #!/usr/bin/env python# -*- coding: utf-8 -*- #wangxiaofei #awcloud自动化测试 import time,osimport threadi ...

  5. 记录一次cefsharp1输入法在win7下异常解决定位

    最近几天都被基于cefSharp封装的浏览器控件搞疯了!对于cefSharp基本满足当前所做项目的需求,但是有一个问题一直困扰我,那就是系统中偶尔会出现输入法不能转换到中文.而且这个问题似乎没有什么规 ...

  6. python与saltstack动态传参变量名的研究

    python动态变量名 import sys createVar = locals() listTemp = range(1,10) for i in range(1, len(sys.argv)): ...

  7. 整理string类常见方法的使用说明

    整理String类的Length().charAt().getChars().replace().toUpperCase().toLowerCase().trim().toCharArray()使用说 ...

  8. sqoop 初用

    http://blog.csdn.net/dbanote/article/details/8907650 目前版本的Sqoop中,使用自由形式查询导入,只提供简单的查询,没有复杂的和“OR”条件查询在 ...

  9. Eclipse中Maven工程缺少Maven Dependencies

    Eclipse在引入Maven工程后,找不到Maven Dependencies.使得代码报错,具体如下图所示: 而正常Maven的工程如下所示: 产生这种现象的原因可能是工程对应的开发环境改变,本地 ...

  10. MemoryMappingFile泄漏分析过程

    最近项目突然收到了一个紧急的问题报告 - 用户在进行某些关键操作的时候整个软件突然就crash掉了.幸好产品继承了自动抓取dump的功能...   收到dump之后,通过windbg打开,查看相应的c ...