Android:视图层次结构中的重复ID

时间:2012-04-17 12:39:40

标签: android crash ads

我有一个问题,从市场报道 - 应用程序中的巨大崩溃,告诉我:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com .... android / com .... android.activities ....}:java.lang.IllegalArgumentException:错误的状态类,期待View State但是收到类android.widget.ProgressBar $ SavedState而不是。当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况。该视图的id是id / 0x2。确保其他视图不使用相同的ID。

所以我知道它通常意味着它所说的 - 我有一些带有重复ID的视图。这很好,但令我担心的是,我认为重复的ID视图带有我已集成的一些广告网络。我尝试在视图中使用try / catch包含崩溃,它包含每个广告,但它无法捕获它。

所以我的下一个想法是,广告视图在这方面仍然有一些作用,但崩溃发生在另一个(我自己的)视图上,它具有相同的ID。问题是,我不知道那个视图是什么以及在哪里搜索它。你有什么想法可以是id为0x2的视图吗? (也是0x3 - 关于那个id的很多报道)?您是否偶然发现了与广告网络相关的类似崩溃?

真的很沮丧。任何帮助表示赞赏!

谢谢, 丹

PS完整堆栈跟踪:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com ..... android / com ..... android.activities ....}:java.lang.IllegalArgumentException:错误的状态类,期待View状态但是收到类android.widget.ProgressBar $ SavedState而不是。当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况。该视图的id是id / 0x2。确保其他视图不使用相同的ID。   在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)   在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)   在android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2836)   在android.app.ActivityThread.access $ 1600(ActivityThread.java:117)   在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:939)   在android.os.Handler.dispatchMessage(Handler.java:99)   在android.os.Looper.loop(Looper.java:130)   在android.app.ActivityThread.main(ActivityThread.java:3691)   at java.lang.reflect.Method.invokeNative(Native Method)   在java.lang.reflect.Method.invoke(Method.java:507)   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:907)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)   at dalvik.system.NativeStart.main(Native Method)   引起:java.lang.IllegalArgumentException:错误的状态类,期望View State但是收到了类android.widget.ProgressBar $ SavedState。当两个不同类型的视图在同一层次结构中具有相同的id时,通常会发生这种情况。该视图的id是id / 0x2。确保其他视图不使用相同的ID。   在android.view.View.onRestoreInstanceState(View.java:6355)   在android.view.View.dispatchRestoreInstanceState(View.java:6331)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1211)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1215)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1215)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1215)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1215)   在android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1215)   在android.view.View.restoreHierarchyState(View.java:6310)   在com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1537)   在android.app.Activity.onRestoreInstanceState(Activity.java:850)   在android.app.Activity.performRestoreInstanceState(Activity.java:822)   在android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)   在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1629)   ......还有12个

1 个答案:

答案 0 :(得分:3)

从一个片段切换到另一个包含progressBar相同ID的片段时遇到此问题。将id更改为不同的ID并得到解决。

相关问题