Android运行异常二:java.lang.IllegalStateException: Fragment already active

时间:2022-08-02 20:32:37
09-13 16:31:57.710 11428-11428/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tomra.trsort, PID: 11428
java.lang.IllegalStateException: Fragment already active
at android.app.Fragment.setArguments(Fragment.java:696)
at com.tomra.trsort.act_TrMain.onClick(act_TrMain.java:890)
at com.tomra.trsort.ui.frag_chute$2.onClick(frag_chute.java:79)
at android.view.View.performClick(View.java:4454)
at android.view.View$PerformClick.run(View.java:18454)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
at dalvik.system.NativeStart.main(Native Method)

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的属性方法进行数据的存储和获取。