Ich bin neu auf OpenGL-ES auf Android, also entschuldige mich für meine noobish Frage. Ich baue dieses Programm für Android v2.2 - SDK # 8. Mein Tablet unterstützt bis zu Android v3.1OpenGLES auf Android - IllegalStateException: setRenderer wurde bereits für diese Instanz aufgerufen
Ich versuche, eine OpenGL-ES-Umgebung für Android einzurichten, indem Sie ein Tutorial auf developer.android.com folgen. Das Programm kompiliert gut, und es sollte einen einfachen blauen Bildschirm auf dem Gerät anzeigen. Als ich jedoch versuchte, es auf meinem Android-Gerät auszuführen, bekam ich den Fehler "IllegalStateException: setRenderer wurde bereits für diese Instanz aufgerufen".
Unten ist mein Code:
public class TA_SpaceActivity extends Activity
{
private MyGLSurfaceView myGLView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
myGLView = new MyGLSurfaceView(this); //NOTE: this is where the app crashed
setContentView(myGLView);
}
}
class MyGLSurfaceView extends GLSurfaceView
{
public MyGLSurfaceView(Context context)
{
super(context);
setRenderer (new MyRenderer());
setEGLContextClientVersion(2);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
}
class MyRenderer implements GLSurfaceView.Renderer
{
public void onSurfaceCreated(GL10 unsued, EGLConfig config)
{
GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
public void onDrawFrame(GL10 unused)
{
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
public void onSurfaceChanged(GL10 unused, int width, int height)
{
GLES20.glViewport(0, 0, width, height);
}
}
Zuerst habe ich darauf geachtet, dass die uses-Feature-Tag für OpenGLES in der AndroidManifest.xml Datei enthalten war:
Dann, wenn Ich habe einen Debug-Lauf ausgeführt, die ActivityThread.perfo zeigte eine Fehlermeldung "Quelle nicht gefunden". Also habe ich den Weg dorthin (und ich auch dafür gesorgt, dass die android.jar Datei im Verzeichnis vorhanden ist)
Doch die App abgestürzt rechts in der Zeile „myGLView = new MyGLSurfaceView (dies) ". Als ich das LogCat untersuchte, zeigte es, dass das Programm eine IllegalStateException beim Funktionsaufruf setRenderer() warf.
Also, ich habe 2 Rätsel, die ich im Moment nicht verstehen:
1) Warum es eine „Quelle nicht gefunden“ Fehlermeldung, wenn der Link auf die Quelle werfen hat war klar im Projekt definiert?
2) Warum heißt es "setRenderer() wurde für diese Instanz aufgerufen"? Ich habe es nur einmal in meiner Unterklasse "MyGLSurfaceView" aufgerufen.
Für das erste Rätsel, von dem, was ich gehört habe, wird Eclipse fast immer eine "Source Not Found" -Nachricht für jeden zufälligen Fehler werfen, die Sie machen. Ist es richtig? (Wenn nicht, bitte korrigieren Sie mich).
Wenn dies der Fall ist, dann denke ich, dass die Ursache des Problems etwas mit der Methode setRenderer() in meiner Unterklasse zu tun hat. Nachdem ich den ganzen Tag herumgespielt habe, konnte ich keinen Weg finden, dieses Problem zu beheben. Würde irgendein Körper mir einen Hinweis geben, was ich versuchen kann, dies zu beheben "IllegalStateException: setRenderer() wurde für diese Instanz aufgerufen" Problem?
Vielen Dank im Voraus für Ihre Hilfe.
über "Quelle nicht gefunden". Schauen Sie sich dieses Thema an: http: // stackoverflow.com/questions/14942851/the-source-attachment-does-not-enthalten-die-Quelle-für-die-Datei-layoutinflater-cl –
Über "Quelle nicht gefunden" Fehlermeldung. Schauen Sie sich dieses Thema an: http://stackoverflow.com/questions/14942851/the-source-attachment-does-not-contain-the-source-for-the-file-layoutinflater-cl –