android-随机碎片问题

android-随机碎片问题,第1张

概述在我的oncreate方法中,我有这个//CreatenewfragmentandtransactionmyFragment=newMyFragment();FragmentTransactiontransaction=getSupportFragmentManager().beginTransaction();transaction.replace(R.id.downPart,myFragment);transaction.commit();问题是

在我的oncreate方法中,我有这个

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

问题是它引发forthclose消息与此错误

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将保存它们的状态并在应用程序的进程被杀死以回收内存等时重新创建它们.“最小化”您的应用程序(按下主屏幕)然后打开许多其他应用程序将导致此情况.当您返回时,它只能重新创建您的片段,如错误所述,该片段类名称存在,是公共的并且具有空的公共构造函数.

您尚未向我们展示MyFragment的代码,但我猜这些条件之一是不正确的.特别是,MyFragment可能是您活动的(非静态)内部类.内部类只能在外部类的实例中实例化,但是AndroID在重新创建片段时会从另一个上下文进行此 *** 作.这就是为什么将Fragment作为内部类是一个问题.

要对其进行修复,请确保MyFragment是静态内部类或它自己的类,并且构造函数是公共的(或不存在;构造函数将使用默认的构造函数).静态内部类可以不存在其外部类的实例而存在(并且不能访问任何实例变量).

您可以通过在启动应用程序后按下主页(将调用onSaveInstanceState),使用DDMS终止该进程,然后重新启动您的应用程序,来轻松地对此进行测试.或者,尝试执行原始步骤,从而在两者之间打开许多其他应用.

总结

以上是内存溢出为你收集整理的android-随机碎片问题全部内容,希望文章能够帮你解决android-随机碎片问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1084533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存