Android文本视图文本显示为黑色方块?

Android文本视图文本显示为黑色方块?,android,textview,render,ui-thread,Android,Textview,Render,Ui Thread,我的应用程序中有一个文本视图,在我暂停应用程序(按home键)并再次启动它之前,它工作正常。它应该只是恢复活动,但由于某些原因,TextView在恢复活动后无法正确显示文本。文本显示为黑色方块,如下所示: 有人知道如何解决这个问题吗 编辑:这是我的代码: TextView是在一个布局xml中创建的,该布局xml包含一个GLSurfaceView(称为GameView)以及一个TextView。以下是xml代码: <RelativeLayout xmlns:android="http://

我的应用程序中有一个文本视图,在我暂停应用程序(按home键)并再次启动它之前,它工作正常。它应该只是恢复活动,但由于某些原因,TextView在恢复活动后无法正确显示文本。文本显示为黑色方块,如下所示:

有人知道如何解决这个问题吗

编辑:这是我的代码: TextView是在一个布局xml中创建的,该布局xml包含一个GLSurfaceView(称为GameView)以及一个TextView。以下是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>
onPause、onResume、onStart和onStop方法与TextView没有任何关系。 TextView保存到MainActivity的实例变量中,稍后调用TextView.setText()来设置TextView的文本


编辑:我可以通过注释掉一行来解决这个问题:GLES20.glDeleteTextures(…),这行在Pause()上被调用。我不知道这两者之间有什么关系,也不知道为什么调用这个函数会导致这个问题,但是当我注释掉它时,问题就消失了,当我把这行代码带回来时,问题又回来了。如果有人能解释一种方法与另一种方法之间的关系,我们将不胜感激。

检查您在“开始”和“停止”方法中的内容,可以肯定的是,您之前键入的内容一定会被绘制出来。

请尝试将

@Override
public void onResume() {
    super.onResume(); // Always call the superclass method first

TextView textView = (TextView) findViewById(R.id.tv);
textView.forceLayout();

}

让我知道这是否解决了您的问题?

我遇到了同样的情况

只需确保在创建它的线程中删除视图(使用opengl)纹理操作


在您的情况下,GameView是关键。

我自己并没有实现onStart和onStop方法。你说它在画我刚才键入的东西是什么意思?当活动恢复时,我是否必须以某种方式清除它?实际上,你不必做任何事情。如果你发布你的oncreate-on-start-n-on-resume-code-n-layout可能是,我可以指出哪里出了问题。如果你不能找出哪里出了问题,你能告诉我是什么导致了这种行为吗?当你说它在画我之前键入的内容时,你是什么意思?我能够找到解决问题的方法,尽管我不知道为什么我的解决方案有效。我将我的解决方案编辑到了我的原始帖子中。在嵌入的
XWalkView
之上的TextView中,似乎也会发生同样的情况。遗憾的是,简历上的
forceLayout()
调用在这里没有什么区别。注意:仅在Android Kitkat 4.4.4(API 19)中观察到,而不是在4.3或更高版本中观察到。
@Override
public void onResume() {
    super.onResume(); // Always call the superclass method first

TextView textView = (TextView) findViewById(R.id.tv);
textView.forceLayout();

}