我正在制作一个Android应用程序,它涉及每4秒检查一次状态并根据它采取一些行动。因此,当我获得状态'已取消'时,我需要进行片段交易。为了每4秒检查一次,我使用包含在timentask中的异步任务来发出get请求。假设应用程序是后台,异步任务每4秒运行一次,如果我在应用程序仍在后台时“取消”,我在进行片段事务时会收到以下错误。这样做的正确方法是什么?
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1527)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1545)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:654)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:621)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at com.dride.android.dride.MapActivity$15.run(MapActivity.java:805)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5254)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我尝试在处理程序中执行事务,但仍然遇到相同的错误。
EDIT 片段事务代码
fm.beginTransaction()
.remove(f1)
.add(R.id.fm_options_list, optionsFragment, "Option List")
.commit();
注意片段f1是一个,其中所有这一切都在发生。 (异步任务,每4秒检查一次并在收到'取消'时进行交易)