【发布时间】:2014-03-13 20:31:20
【问题描述】:
我从 SurfaceView.onAttachedToWindow 收到此异常。看起来 SurfaceView 正在尝试引用 mParent,但它为空。有谁知道为什么不设置父级但会调用 onAttachedToWindow?
我正在使用 SurfaceView 进行相机预览。我有一个从活动的根视图中添加/删除的 ViewGroup。 ViewGroup 内部是 SurfaceView 和 WebView。
这是 ViewGroup 的代码:http://pastebin.com/eSyZ3v3P,这是显示/隐藏相机的代码:http://pastebin.com/5iaEFCQr
任何帮助将不胜感激。
这是完整的堆栈跟踪:
java.lang.NullPointerException
at android.view.SurfaceView.onAttachedToWindow(SurfaceView.java:207)
at android.view.View.dispatchAttachedToWindow(View.java:11755)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1199)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
-- 编辑--
抱歉,我忘了提,我不知道重现异常的步骤。每次我运行该应用程序时,该代码都有效,但我从三星 Galaxy Tab 3 将这些异常发送到我的记录器。而且问题并不一致。
【问题讨论】:
-
你使用哪个android API? 19 ?
-
我使用的是 API 级别 15。
-
你好,凯尔,你有没有解决这个问题?我找到了一种重现它的方法:获取一个带有相机预览和相机启动按钮和相机停止按钮的应用程序。现在,如果你遇到一个疯狂的用户,并且他在不到 2 秒的时间内按下 : Start Stop Start,就会抛出这个异常。
-
@rupinderjeet 很有趣。我没有考虑到这一点。自从我重写了我的相机实现后,我实际上已经忘记了这个问题。我最终编写了一个状态机,以确保在相机未准备好时不会调用任何东西。
标签: android