gpt4 book ai didi

android - 随机 fragment 问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:32 24 4
gpt4 key购买 nike

在我的 oncreate 方法中我有这个

// Create new fragment and transaction
myFragment = new MyFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.downPart, myFragment);
transaction.commit();

问题是它有时会因为这个错误而放弃关闭消息

Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.pakagename.pak1.MyFragmentsActivity: make sure class name exists, is public, and has an empty constructor that is public

但它只是有时它是随机的,有时我启动我的应用程序并且运行良好,例如它连续运行 10 次运行正常,然后当我启动它时它崩溃了......之后又可以了

我不明白为什么有时它会崩溃,如果有其他一些应用程序在后台运行并且它们会以某种方式降低我的 CPU 速度或占用大量内存,是否有可能崩溃,我真的不明白这种随机行为.

最佳答案

如果您将 Fragment 添加到 FragmentManager,Android 将保存它们的状态并在应用进程被杀死以回收内存等情况下重新创建它们。“最小化”您的应用程序(按主页)然后打开许多其他应用程序会导致这种情况。当您返回时,它只能重新创建您的 fragment ,如果如错误所述, fragment 类名存在、是公共(public)的并且具有空的公共(public)构造函数。

您还没有向我们展示 MyFragment 的代码,但我猜其中一个条件不成立。特别是,MyFragment 很可能是您 Activity 的(非静态)内部类。内部类只能在外部类的实例中实例化,但 Android 在重新创建您的 fragment 时会从另一个上下文执行此操作。这就是为什么将 Fragment 作为内部类是一个问题。

要修复它,请确保 MyFragment 是静态内部类或它自己的类,并且构造函数是公共(public)的(或不存在;它将使用默认构造函数)。静态内部类可以在没有其外部类实例的情况下存在(并且无法访问任何实例变量)。

您可以通过在启动应用程序(onSaveInstanceState 将被调用)后按 home 键来非常轻松地测试它,使用 DDMS 终止进程,然后重新启动您的应用程序。或者,尝试您原来的步骤,在这期间您可以打开许多其他应用。

关于android - 随机 fragment 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com