Java 将输出从Bufferedreader打印到TextView
我目前正在编写一个应用程序,manly作为一个控制台,用于接收和发送消息到我的套接字服务器 我想将服务器发送给我的消息输出到textview 我的问题是,我在更改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. 我的代码
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文档中找到确切信息时抛出此错误。错误消息似乎非常清楚。