当前位置: 首页 > 知识库问答 >
问题:

应用程序崩溃后改变手机语言和重新启动从后台

梁英喆
2023-03-14

我正在开发一款android应用程序,面临一些奇怪的问题。当应用程序处于后台时,用户更改手机语言并从后台重新启动应用程序,然后应用程序强制停止。

奇怪的是,应用程序崩溃只有当我把语言从英语到法语,但从法语到英语或其他一些语言,它将工作没有任何崩溃。

进程:com。myapp,PID:17745 java。lang.IllegalStateException:android上的活动已被销毁。支持v4。应用程序。支离破碎。android上的enqueueAction(FragmentManager.java:1515)。支持v4。应用程序。背景记录。android上的Committenternal(backbackrecord.java:638)。支持v4。应用程序。背景记录。android上的commitAllowingStateLoss(BackStackRecord.java:621)。支持v4。应用程序。碎裂的雷达。android上的finishUpdate(FragmentStatePagerAdapter.java:162)。支持v4。看法寻呼机。在android上填充(ViewPager.java:1177)。支持v4。看法寻呼机。在android上填充(ViewPager.java:1025)。支持v4。看法寻呼机。android上的onMeasure(ViewPager.java:1545)。看法看法android上的measure(View.java:18794)。小装置。相对论。android上的measureChildHorizontal(RelativeLayout.java:715)。小装置。相对论。android上的onMeasure(RelativeLayout.java:461)。看法看法android上的measure(View.java:18794)。小装置。相对论。android上的measureChildHorizontal(RelativeLayout.java:715)。小装置。相对论。android上的onMeasure(RelativeLayout.java:461)。看法看法android上的measure(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。线性布局。android上的measureChildBeforeLayout(LinearLayout.java:1465)。小装置。线性布局。android上的measureVertical(LinearLayout.java:748)。小装置。线性布局。android上的onMeasure(LinearLayout.java:630)。看法看法android上的measure(View.java:18794)。支持v4。小装置。抽屉布局。android上的onMeasure(DroperLayout.java:1075)。看法看法android上的measure(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。框架布局。android上的onMeasure(FrameLayout.html" target="_blank">java:194)。支持v7。小装置。ContentFrameLayout。android上的onMeasure(ContentFrameLayout.java:135)。看法看法在android上测量(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。线性布局。android上的measureChildBeforeLayout(LinearLayout.java:1465)。小装置。线性布局。android上的measureVertical(LinearLayout.java:748)。小装置。线性布局。android上的onMeasure(LinearLayout.java:630)。看法看法android上的measure(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。框架布局。android上的onMeasure(FrameLayout.java:194)。看法看法android上的measure(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。线性布局。android上的measureChildBeforeLayout(LinearLayout.java:1465)。小装置。线性布局。android上的measureVertical(LinearLayout.java:748)。小装置。线性布局。android上的onMeasure(LinearLayout.java:630)。看法看法android上的measure(View.java:18794)。看法查看组。android上的measureChildWithMargins(ViewGroup.java:5951)。小装置。框架布局。com上的onMeasure(FrameLayout.java:194)。Android内部的政策电话窗口$DecorView。android上的onMeasure(PhoneWindow.java:2643)。看法看法android上的measure(View.java:18794)。看法ViewRootImpl。android上的performMeasure(ViewRootImpl.java:2100)。看法ViewRootImpl。android上的measureHierarchy(ViewRootImpl.java:1216)。看法ViewRootImpl。android上的performTraversals(ViewRootImpl.java:1452)。看法ViewRootImpl。android上的doTraversal(ViewRootImpl.java:1107)。看法ViewRootImpl$TraversalRunnable。在android上运行(ViewRootImpl.java:6013)。看法编舞$CallbackRecord。在android上运行(Choreographer.java:858)。看法编舞android上的doCallbacks(Choreographer.java:670)。看法编舞android上的doFrame(Choreographer.java:606)。看法编舞$FrameDisplayEventReceiver。在android上运行(Choreographer.java:844)。操作系统。汉德勒。android上的handleCallback(Handler.java:739)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:95)。操作系统。活套。android上的loop(Looper.java:148)。应用程序。活动线程。java上的main(ActivityThread.java:5417)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:726)。Android内部的操作系统。合子体。main(ZygoteInit.java:616)

共有2个答案

龙德润
2023-03-14

这是因为当您更改设备的语言时,会创建片段的新实例,而应用程序会尝试查找新实例。

您需要将片段的实例存储在一个列表中,以避免这种类型的异常。

如果在添加片段的地方提供代码,那么代码就会更清晰。

慕河
2023-03-14

这似乎是为嵌套片段添加的支持功能中出现的一个错误。

基本上,当FragmentManager脱离活动时,它最终会以一个破碎的内部状态告终。

在你的碎片上试试这个:

@Override
public void onDetach() {
    super.onDetach();
    try {
        Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
        childFragmentManager.setAccessible(true);
        childFragmentManager.set(this, null);

    } catch (NoSuchFieldException e | IllegalAccessException e) {
        throw new RuntimeException(e);
    }
}

让我知道它是否有效。

祝好

 类似资料:
  • 我最近把一个应用程序上传到谷歌play商店,一切正常。我下载了它,并能够注册一个新用户。加载应用程序的主要活动时,应用程序崩溃。 这是我得到的stacktrace: 以前可能有人问过这个问题,但我已经研究了很多次,没有找到解决这个问题的方法。任何帮助都将不胜感激。该应用程序是使用android java和firebase创建的。

  • 问题内容: 每次我从Eclipse导出签名应用程序并将apk文件安装到手机上时,该应用程序都会崩溃。这仅在启用Proguard的情况下发生。 这是我的保护文件 我运行了adb logcat命令来检查崩溃报告。以下是我认为很重要的报告摘要: 第二段: 如果有人可以帮助我,我将非常感谢并接受您的回答。 更新: 所以我将这些添加到我的proguard文件中 现在启用Proguard时出现与Jackson

  • 我正在尝试创建一个应用程序,有很多高清晰度的图像,这样他们就可以在高端设备和低端设备上工作。因为现在有的设备是手机,现在的分辨率是1080p。 我使用的是一个具有756MB内存、720p屏幕和我的VM堆大小为64MB的AVD。我的操作系统是Windows8。 这是我的activity档案。我现在没有添加任何内容 这是xml文件: null 在运行应用程序时,我会收到以下消息: “不幸德国洗衣店停摆

  • 我的应用程序在我试图实现的闪屏后崩溃。我不知道问题发生在哪里。 我试着用两个小时来解决这个问题,甚至还研究了一下网络,但不知怎么的,我没能让它工作。也许你们可以看看代码,给我一些提示?我会很感激的。 AndroidManifest。xml launch_screen.xml activity_main.xml 风格。xml 主要活动。JAVA 所以会显示实际的启动屏幕,但之后应用程序就会崩溃。我不

  • 问题是,当我在Google中使用授权运行此代码时,它会立即崩溃: 但是日志中的错误: 2019-06-22 17:55:42.652 29327-23222/?E/AudioSource:在已关闭的AudioSource 2019-06-22 17:55:43.240 2093-2616/?E/TouchFilter:setTouchFilter日志启用参数:0 2019-06-22 17:55:

  • 问题内容: MongoDB刚刚强制将我的Heroku服务器上的更新从2.6更新为3.0 现在,我的应用在启动后不久因以下错误而崩溃: 我检查了他们的状态页,发现Mongo已将其服务器更新为3.0版,而且该更新现在应该稳定了,因此这是我需要做的事情。 在看了一些之后。我发现应该安装新的“驱动程序”以与3.0版兼容。 我发现此链接http://docs.mongodb.org/manual/relea