update thread runonuithread example android textview render ui-thread

runonuithread - ui thread android



¿El texto de Android TextView aparece como cuadrados negros? (3)

Tengo un TextView en mi aplicación que funciona bien hasta que pause la aplicación (presionando home) y la vuelvo a abrir. Simplemente debe reanudar la actividad, pero por alguna razón, TextView no muestra el texto correctamente después de que reanude la actividad. El texto aparece como cuadrados negros, como este:

http://i.stack.imgur.com/5mtvy.png

¿Alguien sabe cómo arreglar esto?

EDITAR: Aquí está mi código: The TextView se crea en un diseño xml que tiene un GLSurfaceView (llamado GameView) y encima de eso un TextView. Aquí está el código xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="MainActivity" > <GameView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/gv" /> <TextView android:layout_width="100dp" android:layout_height="100dp" android:textColor="@android:color/black" android:id="@+id/tv" /> </RelativeLayout>

Y aquí está el código en la clase MainActivity onCreate method:

setContentView(R.layout.activity_main); GameView gameView = (GameView) findViewById(R.id.gv); TextView textView = (TextView) findViewById(R.id.tv);

Los métodos onPause, onResume, onStart, onStop no tienen nada que ver con TextView. TextView se guarda en una variable de instancia para MainActivity y luego se llama a TextView.setText () para establecer el texto de TextView.

EDITAR: Pude solucionar este problema comentando una línea: GLES20.glDeleteTextures (...) que se llamaba onPause () No tengo idea de cómo esto está relacionado ni por qué llamar a esta función causó ese problema, pero cuando Comenta que el problema desaparece y cuando devuelvo esta línea el problema vuelve con eso. Si alguien puede explicar cómo se relaciona uno con el otro, sería muy apreciado.


Encontré la misma situación. Solo asegúrate de eliminar la acción de textura en la secuencia que creaste.


Comprueba lo que tienes al inicio y en los métodos de detención, es seguro que estás pintando lo que escribiste antes.


Intenta poner

@Override public void onResume() { super.onResume(); // Always call the superclass method first TextView textView = (TextView) findViewById(R.id.tv); textView.forceLayout(); }

Déjame saber si esto resuelve tu problema o no?