java.lang.IllegalArgumentException:未找到 (android:id/content) 的视图
java.lang.IllegalArgumentException: No view found for (android:id/content)
我们正在使用的图书馆,Usabilla:
https://github.com/usabilla/usabilla-u4a-android-sdk/issues/180#
当特定事件发生时,在应用中的任何位置显示横幅片段。
我们调用来触发事件的唯一方法是:
Usabilla.sendEvent(applicationContext,eventString)
当 activity 布局没有片段标签时,它工作正常。但是当我们在布局中包含 NavHostFragment 时,应用程序崩溃,因为记录器说视图对于 (android:id/content) 为空。有什么想法可以解决这个问题(这样即使使用 NavHostFragment,android:id/content 仍然会被发现)?
堆栈跟踪:
2020-10-29 06:00:05.796 22184-22184/au.com.nib.memberapp.develop E/AndroidRuntime:致命异常:main
进程:au.com.nib.memberapp.develop,PID:22184
java.lang.IllegalArgumentException:找不到片段 BannerFragment {32c54c0} (c7b3bbc0-668a-4553-9c52-f031b04f8a83) id=0x1020002} 的 id 0x1020002 (android:id/content) 的视图
在 androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:315)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1199)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368)
在 androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1509)
在 androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
在 androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2181)
在androidx.fragment.app.FragmentManager.executeOps一起(FragmentManager.java:2004)
在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1959)
在 androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1861)
在 androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
在 android.os.Handler.handleCallback(Handler.java:883)
在 android.os.Handler.dispatchMessage(Handler.java:100)
在 android.os.Looper.loop(Looper.java:237)
在 android.app.ActivityThread.main(ActivityThread.java:8167)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
我们解决了上面的问题。问题出在 Usabilla.updateFragmentManager(需要在 Usabilla.sendEvent(applicationContext,eventString) 之前调用)。之前,我们使用当前片段的parentFragmentManager。我们切换到 activity.supportFragmentManager,它起作用了。
我们正在使用的图书馆,Usabilla: https://github.com/usabilla/usabilla-u4a-android-sdk/issues/180#
当特定事件发生时,在应用中的任何位置显示横幅片段。
我们调用来触发事件的唯一方法是: Usabilla.sendEvent(applicationContext,eventString)
当 activity 布局没有片段标签时,它工作正常。但是当我们在布局中包含 NavHostFragment 时,应用程序崩溃,因为记录器说视图对于 (android:id/content) 为空。有什么想法可以解决这个问题(这样即使使用 NavHostFragment,android:id/content 仍然会被发现)?
堆栈跟踪:
2020-10-29 06:00:05.796 22184-22184/au.com.nib.memberapp.develop E/AndroidRuntime:致命异常:main 进程:au.com.nib.memberapp.develop,PID:22184 java.lang.IllegalArgumentException:找不到片段 BannerFragment {32c54c0} (c7b3bbc0-668a-4553-9c52-f031b04f8a83) id=0x1020002} 的 id 0x1020002 (android:id/content) 的视图 在 androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:315) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1199) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368) 在 androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1509) 在 androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447) 在 androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2181) 在androidx.fragment.app.FragmentManager.executeOps一起(FragmentManager.java:2004) 在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1959) 在 androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1861) 在 androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
我们解决了上面的问题。问题出在 Usabilla.updateFragmentManager(需要在 Usabilla.sendEvent(applicationContext,eventString) 之前调用)。之前,我们使用当前片段的parentFragmentManager。我们切换到 activity.supportFragmentManager,它起作用了。