Daniel Jung
- Forum-Beiträge: 4
30.04.2013, 23:55:33 via Website
30.04.2013 23:55:33 via Website
Hallo liebe Community,
ich habe ein kleines Problem bei der Programmierung mit OpenGl unter Android: Ich will nach einem bestimmten Input-Event, das durch onTouchEvent(MotionEvent event) des OpenGL Renderers ausgelöst wird, einen Dialog öffnen. Was ich bereits herausgefunden habe ist, dass ich den Dialog aus dem UI-Thread starten muss, da es aus dem OpenGL Thread nicht möglich ist. Dazu benutze ich die Methode
Beim ersten mal klappt der ganze Spaß auch, der Dialog wird ordnungsgemäß angezeigt. Sobald man den Dialog aber schließt, und er erneut geöffnet werden soll, erhalte ich den Fehler: E/libEGL(1664): call to OpenGL ES API with no current context (logged once per thread)
Gegoogelt habe ich den Fehler bereits und in meiner manifest.xml die Zeile "android:hardwareAccelerated="true"" hinzugefügt ... bringt jedoch garnichts.
Ich habe auch andere Methoden ausprobiert, den UI-Thread anzusprechen, jedoch bekomme ich bei allen anderen entweder den selben oder eben einen anderen Fehler.
Hier grob der Code:
MfG Daniel Jung
ich habe ein kleines Problem bei der Programmierung mit OpenGl unter Android: Ich will nach einem bestimmten Input-Event, das durch onTouchEvent(MotionEvent event) des OpenGL Renderers ausgelöst wird, einen Dialog öffnen. Was ich bereits herausgefunden habe ist, dass ich den Dialog aus dem UI-Thread starten muss, da es aus dem OpenGL Thread nicht möglich ist. Dazu benutze ich die Methode
1Activity.runOnUiThread(Runnable)
, wobei in dem Runnable-Objekt der Dialog erzeugt wird.Beim ersten mal klappt der ganze Spaß auch, der Dialog wird ordnungsgemäß angezeigt. Sobald man den Dialog aber schließt, und er erneut geöffnet werden soll, erhalte ich den Fehler: E/libEGL(1664): call to OpenGL ES API with no current context (logged once per thread)
Gegoogelt habe ich den Fehler bereits und in meiner manifest.xml die Zeile "android:hardwareAccelerated="true"" hinzugefügt ... bringt jedoch garnichts.
Ich habe auch andere Methoden ausprobiert, den UI-Thread anzusprechen, jedoch bekomme ich bei allen anderen entweder den selben oder eben einen anderen Fehler.
Hier grob der Code:
1public class CDialog implements Runnable{
2 public void run() {
3 Dialog d = new Dialog(MainActivity._Activity);
4 ...
5 d.show();
6 }
7}
8
9public final class CView extends GLSurfaceView implements GLSurfaceView.Renderer{
10 public boolean onTouchEvent(MotionEvent event){
11 MainActivity._Activity.runOnUiThread(new CDialog(p)); //Die Activity, gespeichert als static in der Klasse MainActivity
12 return true;
13 }
14}
Ich hoffe, ihr könnt mir helfen, ich weiß nicht, was ich noch versuchen sollte!2 public void run() {
3 Dialog d = new Dialog(MainActivity._Activity);
4 ...
5 d.show();
6 }
7}
8
9public final class CView extends GLSurfaceView implements GLSurfaceView.Renderer{
10 public boolean onTouchEvent(MotionEvent event){
11 MainActivity._Activity.runOnUiThread(new CDialog(p)); //Die Activity, gespeichert als static in der Klasse MainActivity
12 return true;
13 }
14}
MfG Daniel Jung
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.