2012-04-17 52 views
5

重复的ID我有一个问题,从市场报 - 巨大的撞击声在应用程序,告诉我说:安卓:鉴于层次

了java.lang.RuntimeException:无法启动活动ComponentInfo {融为一体。 ... android/com .... android.activities ....}:java.lang.IllegalArgumentException:错误的状态类,期望视图状态,但接收类android.widget.ProgressBar $ SavedState。这通常发生在不同类型的两个视图在同一层次结构中具有相同ID时。这个视图的id是id/0x2。确保其他视图不使用相同的ID。

所以我知道它通常意味着它说什么 - 我有重复ID的某处的意见。这很好,但是令我担心的是我认为重复的id视图带有我已经集成的一些ad网络。我试图用视图上的try/catch来控制崩溃,该视图包含每个广告,但未能抓住它。

所以我的下一个想法是,广告的意见在这方面仍然有一些作用,但其他(我自己的)视图,具有相同的ID发生崩溃。事情是,我不知道那是什么观点以及在哪里寻找它。你有什么想法什么可以是一个ID为0x2的视图? (也是0x3 - 关于该ID的大量报告)?您是否偶然发现了与广告网络相关的类似崩溃?

真的对此感到沮丧。任何帮助感谢!

感谢, 丹

PS完整的堆栈跟踪:

了java.lang.RuntimeException:无法启动活动ComponentInfo {COM .....安卓/ 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) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3691) at java.lang.reflect.Method.invokeNative(Native Method) at java。 lang.reflect.Method.invoke(Method.java:507) at com.an droid.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:907) at 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.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(仪表。 java:1096) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1629) ...... 12多个

回答

2

面对这个问题,同时从一个片段切换到其中包含了进度相同ID的另一个片段。将ID更改为不同的ID并解决。