9

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

java.lang.RuntimeException:无法启动活动 ComponentInfo{com....android/com....android.activities....}:java.lang.IllegalArgumentException:错误的状态类,期望查看状态,但收到类 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:错误的状态类,期望查看状态但收到类 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) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) at android.os.Handler.dispatchMessage(Handler. java:99) 在 android.os.Looper.loop(Looper.java:130) 在 android.app.ActivityThread.main(ActivityThread.java:3691) 在 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:错误的状态类,期望查看状态,但收到了类 android.widget.ProgressBar$SavedState。当不同类型的两个视图在同一层次结构中具有相同的 id 时,通常会发生这种情况。这个视图的 id 是 id/0x2。确保其他视图不使用相同的 ID。在 android.view.View 的 android.view.View.onRestoreInstanceState(View.java:6355)。

4

1 回答 1

3

从一个片段切换到另一个片段时遇到此问题,该片段包含与进度条相同的 id。将ID更改为其他ID并解决了。

于 2014-05-13T11:48:12.073 回答