【问题标题】:Attempt to invoke virtual method 'int java.lang.String.hashCode()'尝试调用虚拟方法“int java.lang.String.hashCode()”
【发布时间】:2016-01-11 03:25:26
【问题描述】:

我正在尝试使用 Volley 库将图像从 URL 加载到 girdview。为此,我正在关注this 教程。当我运行我的项目时,它会从服务器数据库中收集所有 URL,然后存储在 arraylist 中。但不显示图像。我收到java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference 错误。它甚至没有指向我收到此错误的任何代码行数。请参阅下面的 Logcat 输出:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference
        at com.android.volley.Request.<init>(Request.java:136)
        at com.android.volley.toolbox.ImageRequest.<init>(ImageRequest.java:71)
        at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:219)
        at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:171)
        at com.android.volley.toolbox.NetworkImageView.loadImageIfNecessary(NetworkImageView.java:141)
        at com.android.volley.toolbox.NetworkImageView.onLayout(NetworkImageView.java:190)
        at android.view.View.layout(View.java:15596)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.widget.GridView.setupChild(GridView.java:1542)
        at android.widget.GridView.makeAndAddView(GridView.java:1436)
        at android.widget.GridView.makeRow(GridView.java:361)
        at android.widget.GridView.fillDown(GridView.java:302)
        at android.widget.GridView.fillFromTop(GridView.java:437)
        at android.widget.GridView.layoutChildren(GridView.java:1276)
        at android.widget.AbsListView.onLayout(AbsListView.java:2148)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
        at android.widget.ScrollView.onLayout(ScrollView.java:1502)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
        at android.view.View.layout(View.java:15596)
        at android.view.ViewGroup.layout(ViewGroup.java:4966)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
        at android.view.Choreographer.doCallbacks(Choreographer.java:580)
        at android.view.Choreographer.doFrame(Choreographer.java:550)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

任何人都可以帮助我确切的问题是什么,我该如何解决?

【问题讨论】:

  • @Selvin No..这不是什么是空指针的重复......
  • 你在一个空字符串上调用#hashCode()。
  • @nbokmans 你为什么这么肯定他/她会打电话给它?我认为他/她的代码的包名不会是com.android...

标签: android gridview android-volley android-logcat networkimageview


【解决方案1】:

您应该检查从服务器获取数据的图像的空值。

【讨论】:

    【解决方案2】:

    获取字符串值为空,此实例显示 String.hashcode() 错误

    【讨论】:

      【解决方案3】:

      我有同样的问题。刚刚找到了我认为的解决方法。在您尝试与之通信的服务器的链接中,在添加域和所有内容之前指定通信协议,即“http://”或“https://”。那为我修好了。希望对你有帮助

      【讨论】:

        【解决方案4】:

        我在另一个内容中遇到了这个错误,并通过在 Android Studio 中更新 Android SDK 来修复它。 也许有帮助。

        【讨论】:

          【解决方案5】:

          我的服务器是 https,因此出现了不同的错误。我删除了 https 并仅保留域名,但它无法正常工作,因此我最终设置了 https: 并联系我的主机以简化域上的安全规则或为特定域创建特殊规定。根据您的网站在浏览器上的显示情况,检查您在何处实现网站 url 并添加 http 或 https。

          【讨论】:

            【解决方案6】:

            使用适当的 @serializedName 注释更改 api 响应(数据类)。

            【讨论】:

              【解决方案7】:

              检查您的清单。确保使用许可互联网写在那里。

              【讨论】:

                猜你喜欢
                • 2022-01-04
                • 2016-01-25
                • 2017-07-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-11-28
                相关资源
                最近更新 更多