Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将输出从Bufferedreader打印到TextView_Java_Android_Textview_Bufferedreader - Fatal编程技术网

Java 将输出从Bufferedreader打印到TextView

Java 将输出从Bufferedreader打印到TextView,java,android,textview,bufferedreader,Java,Android,Textview,Bufferedreader,我目前正在编写一个应用程序,manly作为一个控制台,用于接收和发送消息到我的套接字服务器 我想将服务器发送给我的消息输出到textview 我的问题是,我在更改textview时遇到以下异常 W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 我的代码

我目前正在编写一个应用程序,manly作为一个控制台,用于接收和发送消息到我的套接字服务器

我想将服务器发送给我的消息输出到textview

我的问题是,我在更改textview时遇到以下异常

W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
我的代码:

public class SocketListener implements Runnable {

public static BufferedReader r;



public void run() {

    try {
        MainActivity.ausgabe.setText("Reading socket");

        String message;
        Boolean run = true;
        while (run) {
            if(r != null) {
                MainActivity.ausgabe.setText("Reading line");
                message = r.readLine();
                MainActivity.ausgabe.setText("Line read");
                if(message != null){
                    MainActivity.ausgabe.setText(message);
                }

            }
        }


    } catch (Exception e) {
        e.printStackTrace();

    }
}

}
就我所测试的而言,问题出在这一行:

 message = r.readLine();
因为在这一行之前更改textview效果很好,但在这一行之后就不起作用了,它会打印读取行,但在打印读取行时会遇到错误

我希望你能帮我,因为我在网上找不到任何东西


亡灵

在实现线程和活动之间的交互时,应该使用Handler或runOnUiThread


我认为由于多线程的原因,错误抛出在某种程度上被延迟了,因此您可以在视图实际更改后看到它。可能还有另一个线程检查视图操作是否正确,并在发现我无法在Android文档中找到确切信息时抛出此错误。

错误消息似乎非常清楚。