Domanda

Sono nuovo a Java e OpenGL.

Sto cercando di ottenere uno schermo di anteprima della fotocamera con la possibilità di visualizzare contemporaneamente oggetti 3D. Dopo aver attraversato i campioni a le demo api, ho pensato combinando il codice per gli esempi a l'API demo sarebbe sufficiente. Ma in qualche modo la sua non funziona. Le forze mi arrestare all'avvio e l'errore viene indicato come puntatore nullo eccezione. Potrebbe condividere qualcuno con me dove ho sbagliato e come procedere da lì. Come ho fatto la combinazione per il codice viene mostrato come qui di seguito:

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); 
    } 
} 

NOTA:

  • Non ho elencare il resto dei file in quanto sono solo copie di le demo api. Il cameraView riferisce esempio camerapreview.java e il CubeRenderer riferisce alla CubeRenderer.java e Cube.java esempio. Qualsiasi aiuto sarebbe apprezzato.

  • Siamo spiacenti, non si rese conto che la codifica era fuori luogo a causa di errori di formattazione.

È stato utile?

Soluzione

la ragione si stanno ottenendo un'eccezione di puntatore nullo quando si lavora con XML è perché ur in realtà la creazione di nuove viste nel codice java .. invece di utilizzare quelli dal file .xml a cui si potrebbe avere passato in proprietà (se u ha passato in proprietà che è ..) .. il nuovo Panorama sarebbe ovviamente hanno un valore nullo .. gettando così un'eccezione di puntatore nullo ... per esempio -

cubesView = new GLSurfaceView (this);

in realtà non è necessario il codice se già creato la vista nel file XML contenente FrameLayout ..

Altri suggerimenti

Questo è molto semplice in realtà ... se si desidera definire la visualizzazione in XML è sufficiente implementare

Public GLSurfaceView(Context context, AttributeSet attrs) {
...
super(context, attrs);
}

al posto di GLSurfaceView (contesto Context)

Questo è quello che viene chiamato automaticamente quando la vista viene inizializzata dal XML. Ho avuto lo stesso problema ed è così che è stato fissato.

Trovato il modo di risolverlo ... via via java ... basta usare addContentView invece di usare XML .... beh almeno il suo risolto. :)

ho effettivamente fatto che qui in questo link SO che fornisce una completa implementazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top