【问题标题】:android zxing captureActivity NPE on ViewfinderViewandroid zxing captureActivity NPE on ViewfinderView
【发布时间】:2013-01-02 23:43:44
【问题描述】:

我已将 zxing 库集成到我的应用程序中。尝试扫描 QR 码时出现运行时错误。它是由 NPE 在尝试从 XML 膨胀 ViewFinderView 对象时引起的。在我的项目中,我的所有应用程序代码都位于一个名为 com.carefreegroup 的包中,所有 zxing 代码都位于 com.google.zxing.client.android 中。我做了一些日志记录来测试 ViewFinderView 是否为空,它实际上返回为空。

谁能告诉我为什么这个物体没有膨胀,可能是包装问题吗?

01-02 15:09:53.887: E/AndroidRuntime(14732): FATAL EXCEPTION: main
01-02 15:09:53.887: E/AndroidRuntime(14732): java.lang.RuntimeException: Unable to resume activity {com.carefreegroup/com.google.zxing.client.android.CaptureActivity}: java.lang.NullPointerException
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2850)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2889)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.os.Looper.loop(Looper.java:156)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.main(ActivityThread.java:5045)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at java.lang.reflect.Method.invokeNative(Native Method)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at java.lang.reflect.Method.invoke(Method.java:511)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at dalvik.system.NativeStart.main(Native Method)
01-02 15:09:53.887: E/AndroidRuntime(14732): Caused by: java.lang.NullPointerException
01-02 15:09:53.887: E/AndroidRuntime(14732):    at com.google.zxing.client.android.CaptureActivity.onResume(CaptureActivity.java:192)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1236)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.Activity.performResume(Activity.java:4625)
01-02 15:09:53.887: E/AndroidRuntime(14732):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2834)
01-02 15:09:53.887: E/AndroidRuntime(14732):    ... 12 more

如果需要检查包裹,我可以发布我的清单文件。

提前致谢

【问题讨论】:

    标签: android zxing


    【解决方案1】:

    您已复制项目的 UI,包括 CaptureActivityViewfinderView。不要那样做——这是不行的,也不是完全允许的。您需要编写自己的应用程序并将您理解的部分重用到您理解的应用程序中。这里确实是你粘贴了一堆代码不完整,而且粘贴的时候也不起作用。

    按意图集成,或编写您自己的应用程序。无论如何请不要像这样使用com.google.zxing.client.android

    【讨论】:

    • 嗨,肖恩,好的,感谢您的回复,我的老板希望它完全集成,因此只需下载一个 apk 即可为我们公司的客户提供服务。我已经向他解释过,这就是 android 旨在通过意图将功能“粘合”在一起的方式。在安装我的应用程序时,有没有办法将我的应用程序指向应用商店以下载 zxing 应用程序。我们希望事情尽可能无缝。再次感谢马特
    • IntentIntegrator 示例代码已经处理了从 Google Play 下载。明确一点:欢迎您集成代码。在不理解的情况下复制和粘贴太多会导致问题。它会生成支持问题(像这样),当他们认为他们正在使用 BS 时会导致用户混淆,最重要的是,如果您不更改命名空间/清单,您将拦截 BS 的意图。一定要写一个集成的扫描应用,但要写你的应用。
    • 嗨,肖恩。我认为如果 zxing 有任何文档,人们就会开始制作他们的应用程序。
    • 谢谢,但没有。我需要在我的活动中包含捕获帧。而且我还必须尝试使您的项目适应我的代码。
    • 好的,但是代码已经是 javadoc 的。您还没有说您认为缺少哪些文档,但是,如果您想修改开源代码,这完全取决于您。没有人欠你一本手册。当人们说“调整你的项目”时,大多数人的意思是克隆它,这会通过复制命名空间/意图声明来损害我们的应用程序,并且不正确地使用我们的商标。我为什么要记录如何做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多