首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >[Android]错误:“不能在onSaveInstanceState之后执行此操作”而不使用它

[Android]错误:“不能在onSaveInstanceState之后执行此操作”而不使用它
EN

Stack Overflow用户
提问于 2022-04-10 16:15:40
回答 1查看 149关注 0票数 2

我是android的初学者,我必须创建一个简单的应用程序来处理学生的课本。基本上,有时我会退出并崩溃这个错误,有时不会。我不使用se函数"onSaveInstanceState“,但当我用3段课程列表来破坏片段时,请给我一个错误。"onDestroy“上的代码是必要的,如果我更改了片段,那么在onDestry中的list desappear...with te函数就解决了它。我发布了一些信息,如果你需要更多的只是ask...thanks。

销毁片段:

代码语言:javascript
运行
复制
    @Override
public void onDestroyView() {
    super.onDestroyView();

    final FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    for (Fragment fragment : adapter.getFragmentArrayList()) {
        fragmentTransaction.remove(fragment);
    }
    fragmentTransaction.commit(); //give error here
}

错误:

代码语言:javascript
运行
复制
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.progettofinale, PID: 25843
java.lang.RuntimeException: Unable to destroy activity {com.example.progettofinale/com.example.progettofinale.MainActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5111)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5140)
    at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:44)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1551)
    at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1591)
    at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341)
    at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306)
    at com.example.progettofinale.ui.mylesson.MyLessonFragment.onDestroyView(MyLessonFragment.java:62)
    at androidx.fragment.app.Fragment.performDestroyView(Fragment.java:3232)
    at androidx.fragment.app.FragmentStateManager.destroyFragmentView(FragmentStateManager.java:744)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:327)
    at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:771)
    at androidx.fragment.app.SpecialEffectsController$Operation.cancel(SpecialEffectsController.java:615)
    at androidx.fragment.app.SpecialEffectsController.forceCompleteAllOperations(SpecialEffectsController.java:350)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2844)
    at androidx.fragment.app.FragmentManager.dispatchDestroyView(FragmentManager.java:2812)
    at androidx.fragment.app.Fragment.performDestroyView(Fragment.java:3225)
    at androidx.fragment.app.FragmentStateManager.destroyFragmentView(FragmentStateManager.java:744)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:327)
    at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:771)
    at androidx.fragment.app.SpecialEffectsController$Operation.cancel(SpecialEffectsController.java:615)
    at androidx.fragment.app.SpecialEffectsController.forceCompleteAllOperations(SpecialEffectsController.java:350)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2844)
    at androidx.fragment.app.FragmentManager.dispatchDestroy(FragmentManager.java:2820)
    at androidx.fragment.app.FragmentController.dispatchDestroy(FragmentController.java:345)
    at androidx.fragment.app.FragmentActivity.onDestroy(FragmentActivity.java:306)
    at androidx.appcompat.app.AppCompatActivity.onDestroy(AppCompatActivity.java:278)
    at android.app.Activity.performDestroy(Activity.java:8239)
    at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1344)
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5096)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5140) 
    at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:44) 
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
EN

回答 1

Stack Overflow用户

发布于 2022-09-25 13:08:25

我也面临着同样的问题,因为我曾经将fragmentTransaction上的动画设置为

代码语言:javascript
运行
复制
fragmentTransaction.setCustomAnimations(R.anim.push_right_in, R.anim.push_right_out, R.anim.push_left_in, R.anim.push_left_out);

如果你和我做的一样,只要删除这一行,在那之后一切都会很好

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71818398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档