Jestem nowicjuszem OpenGL-ES na Androida, więc przepraszam za moje noobish pytanie. Buduję ten program dla Androida v2.2 - SDK # 8. Mój tablet obsługuje system Android w wersji 3.1OpenGLES na Androida - IllegalStateException: setRenderer został już wywołany dla tej instancji
Próbuję skonfigurować środowisko OpenGL-ES dla Androida, postępując zgodnie z samouczkiem na stronie developer.android.com. Program został skompilowany dobrze i miał wyświetlać prosty niebieski ekran na urządzeniu. Jednak gdy próbowałem uruchomić go na moim urządzeniu z systemem Android, otrzymałem komunikat o błędzie "IllegalStateException: setRenderer został już wywołany dla tego wystąpienia".
Poniżej jest mój kod:
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);
}
}
pierwsze, zrobiłem pewien, że znacznik uses-funkcja dla OpenGLES został zawarty w pliku AndroidManifest.xml:
Potem, kiedy Zrobiłem uruchomienie debugowania, ActivityThread.perfo pokazał komunikat o błędzie "Source Not Found". Więc dodałem ścieżkę do niego (i ja również upewnić się, że plik android.jar istnieje w katalogu)
Mimo to aplikacja rozbił się tuż przy linii „myGLView = new MyGLSurfaceView (ta) ". Kiedy przejrzałem LogCat, okazało się, że program rzucił wyjątek IllegalStateException na wywołanie funkcji setRenderer().
Tak, mam 2 puzzle, które nie rozumiem w tej chwili:
1) Dlaczego to rzucić "Źródło not found" komunikat o błędzie, gdy link do źródła było jasno określone w projekcie?
2) Dlaczego napis "setRenderer() został wywołany dla tego wystąpienia"? Nazwałem go tylko raz w mojej podklasie "MyGLSurfaceView".
W przypadku pierwszej układanki, z tego, co słyszałem, Eclipse prawie zawsze wyśle wiadomość "Źródło nie znalezione", gdy za każdy przypadkowy błąd popełnisz błąd. Czy to jest poprawne? (jeśli nie, popraw mnie).
Jeśli tak jest, to myślę, że podstawowa przyczyna problemu ma coś wspólnego z metodą setRenderer() w mojej podklasie. Po całym dniu kręcenia się nie mogłem znaleźć sposobu na rozwiązanie tego problemu. Czy jakiekolwiek ciało dałoby mi wskazówkę, co mogę spróbować naprawić ten "IllegalStateException: setRenderer() został wywołany dla tego wystąpienia" problem?
Z góry dziękujemy za pomoc.
O "Źródło not found". Zobacz ten temat: http: // stackoverflow.com/questions/14942851/the-source-attachment-does-not-contain-the-source-for-the-file-layoutinflater-cl –
Informacje o błędzie "Nie znaleziono źródła". Zobacz ten temat: http://stackoverflow.com/questions/14942851/the-source-attachment-does-not-contain-the-source-for-the-file-layoutinflater-cl –