surfaceview + glsurfaceview + framelayout

Я являюсь новым в Java и OpenGL.

Я пытаюсь получить экран предварительного просмотра камеры со способностью отобразить 3-и объекты одновременно. Пройдя образцы в демонстрациях API, я думал, комбинируя код для, примеры в демонстрации API будут достаточны. Но так или иначе не работа. Вынуждает меня закрыться после запуска, и ошибка упоминается как исключение нулевого указателя. Кто-то мог совместно использовать со мной, где я шел не так, как надо и как продолжить двигаться оттуда. То, как я сделал комбинацию для кода, как показано ниже:

myoverview.xml


<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <android.opengl.GLSurfaceView 
            android:id="@+id/cubes" 
            android:orientation="horizontal" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/> 
    <SurfaceView 
            android:id="@+id/camera" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/> 
</FrameLayout>

myoverview.java


import android.app.Activity; 
import android.os.Bundle; 
import android.view.SurfaceView; 
import android.view.Window; 
public class MyOverView extends Activity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       // Hide the window title. 
       requestWindowFeature(Window.FEATURE_NO_TITLE); 
       // camera view as the background 
       SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera); 
       cameraView = new CameraView(this); 
       // visual of both cubes 
       GLSurfaceView cubesView = (GLSurfaceView) findViewById(R.id.cubes); 
       cubesView = new GLSurfaceView(this); 
       cubesView.setRenderer(new CubeRenderer(false)); 
       // set view 
       setContentView(R.layout.myoverview); 
    } 
}

GLSurfaceView.java


import android.content.Context; 
class GLSurfaceView extends android.opengl.GLSurfaceView { 
    public GLSurfaceView(Context context) { 
            super(context); 
    } 
} 

ПРИМЕЧАНИЕ:

  • Я не перечислял остальную часть файлов, поскольку они - просто копии демонстраций API. cameraView относится к camerapreview.java примеру, и CubeRenderer обращается к CubeRenderer.java и примеру Cube.java. Любая справка ценилась бы.

  • Извините, не понял, что кодирование было неуместно из-за форматирования ошибок.

9
задан ROMANIA_engineer 20 October 2017 в 21:00
поделиться

2 ответа

причина, по которой вы получаете исключение нулевого указателя при работе с .xml, заключается в том, что вы фактически создаете новые представления в своем коде java. вы действительно передали свойства, которые...).. новое представление, очевидно, будет иметь нулевое значение.. таким образом, выдавая исключение нулевого указателя... например --

cubesView = new GLSurfaceView(this);

на самом деле не требуется в коде, если вы уже создали представление в файле .xml, содержащем FrameLayout..

4
ответ дан 4 December 2019 в 21:49
поделиться

Узнайте, как это решить ... через Java Way ... просто используйте AddContentView вместо использования XML .... Ну, по крайней мере, его решено. :)

1
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: