java - 尝试将 setText() 设置为 TextView 时强制关闭应用程序

标签 java android android-asynctask textview

我制作了一个控制记分板的应用程序,我在我的 java 应用程序上使用了套接字服务器,并在我的应用程序上使用了套接字。问题是我从服务器接收数据,但是当我尝试将其设置为 TextView 时,应用程序强制关闭。这是代码,我对 android/Java 编程非常陌生,我不知道使用 AsyncTask 是否会导致问题。

private class SendMessage extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            client = new Socket("192.168.11.23", 4444);
            printwriter = new PrintWriter(client.getOutputStream(), true);
            printwriter.write(message);
            printwriter.flush();

            InputStream is = client.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            score = br.readLine();
            Log.i("TEST", "--> " + score + " <--");
            redScore.setText(score);
            client.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

最佳答案

您不能在后台线程中进行任何 UI 操作。这就是您的应用程序崩溃的原因。继续的方法是返回 doInBackground 中的文本或将此文本存储在类属性中,并使用同一 AsyncTaskonPostExecute 来分配此值,因为此方法是在 UI 线程中调用的。

关于java - 尝试将 setText() 设置为 TextView 时强制关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933610/

相关文章:

android - 在构建我的 Android 应用程序时,我遇到了 fabric 和 crashlytics 的问题

android - sudo adb devices 后ADB无法启动或找不到设备

java - onComplete() 在成功下载 pdf (Rxjava) 后永远不会被调用,但在使用 AsyncTask 时可以工作

java - 检查android应用程序中的空字段

java - Android java.util.Calendar - 时差

java - ListView 中的物理距离

java - Android 通用 AsyncTask 类

android - 在类中处理 AsyncTask

java - valueOf 抛出 NumberFormatException

java - 如何将 5 个字母的字符串表示为数字?