java - GLThread java.lang.NullPointerException 错误

标签 java android opengl-es

我使用 opengl ES 2.0 开发 opengl android 应用程序。我的应用程序崩溃并在日志中写入:

07-28 22:55:29.460 13407-13420/?
E/AndroidRuntime: FATAL EXCEPTION: GLThread 1293 java.lang.NullPointerException at com.jayway.gles20.GLES20Renderer.draw_worlddate(GLES20Renderer.java:521) at com.jayway.gles20.GLES20Renderer.onDrawFrame(GLES20Renderer.java:503) at com.jayway.gles20.GLRenderer.onDrawFrame(GLRenderer.java:87) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

函数错误:

public void draw_worlddate(String wtype){
    Map<String,float[][][]> wdw=worlddate.world;
    float[][][] ww;
    ww = wdw.get(wtype);
    float[][] ww2;
    float[] ww3;
    for (int i=0;i<ww.length;i++){//this is line 521
        ww2=ww[i];

        Matrix.setIdentityM(mModelMatrix, 0);
        for(Integer i2=0;i2<ww2.length;i2++){

            ww3=ww2[i2];
            switch (i2){
                case 0:
                    Matrix.translateM(mModelMatrix,0,ww3[0],ww3[1],ww3[2]);
                break;
                case 1:
                    Matrix.rotateM(mModelMatrix,0,0.0f,ww3[0],ww3[1],ww3[2]);
                break;
                case 2:
                    Matrix.scaleM(mModelMatrix,0,ww3[0],ww3[1],ww3[2]);
                break;
            }
        }
        drawTriangle(mTriangle1Vertices);
    }
}

Map中的解析数组:

 {
            {
                    {
                            1.0f,
                            1.0f,
                            1.0f
                    },
                    {
                            1.0f,
                            1.0f,
                            1.0f
                    },
                    { 
                            1.0f,
                            1.0f,
                            1.0f
                    }
            }
    }

如何解决这个问题?

最佳答案

在尝试确定检索到的数组的长度之前,检查 Map wdw 是否包含关联键的值

if (wdw.containsKey(wtype)) {
   ww = wdw.get(wtype);
   ...
   for (int i=0; i <ww.length;i++){
     ...
   }
}

关于java - GLThread java.lang.NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911919/

相关文章:

java - 设置属性后 Spring 和延迟 Bean Init

android - LinearLayout 把 child 放在右边

Android ViewPager 与 android :layout_weight ="1" is not shown

objective-c - 当 alpha 为 1.0 时,OpenGL ES Faces 看起来是透明的?

java - 在 Java 中渲染 vector 形状

java - 实现 Bresenham 的圆形绘制算法

java - 生成的 Javadoc 与 NetBeans 弹出窗口显示的不同

Android 模拟器在 Ubuntu 17.04 上运行速度极慢

java - LibGDX And​​roid onPause 改变纹理

在Linux控制台中创建openGL上下文(Raspbian)