Android 在 asynctask 中设置文本

2023-12-12

我正在开发 UDP 程序,但我在申请时遇到问题setText in my asynctask。基本上在 UDP 服务器上,我只要求输入一个端口,然后服务器应该连接到本地主机和端口。 ATextView布局中间显示“当前未连接”,当我单击“连接到端口”时,我希望它更改为“已连接”。然而,它并没有做任何事情。我尝试四处寻找,但无法找到解决方案。如果有人能帮助我解决这个问题,我将不胜感激。

我的线程异步任务代码: 编辑:采取setText脱离了doinbackground。然而,setText仍然不起作用。

public class ServerThread extends AsyncTask<String, String, String>{
    TextView chatbox;
    TextView amiconnected;

    @Override
    protected void onPreExecute(){
        chatbox = (TextView) findViewById(R.id.textView2);
        amiconnected = (TextView) findViewById(R.id.textView3);
        PORT = Integer.parseInt(((EditText) findViewById(R.id.editText1)).getText().toString());
    }
    @Override
    protected String doInBackground(String... arg0) {

        //open socket at specified port on the local host
        try {
            socket = new DatagramSocket(PORT);
            //listening

            byte[] buf = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buf, buf.length);
            socket.receive(packet);
            text2 = new String("Now you're connected.");
            //convert received message to string
            text1 = new String(buf, 0, packet.getLength());

            //get client address from received packet
            //client_addr = packet.getAddress();
            //byte[] message = new byte[1024];

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return text2;
    }

    @Override
    protected void onPostExecute(String text2) {
        // TODO Auto-generated method stub
        super.onPostExecute(text2);
        chatbox.setText(text2);

    }   

编辑:我的整个UDP服务器代码

    package com.example.udpcomm;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Server extends Activity{
    int PORT;
    DatagramSocket socket;
    InetAddress client_addr;
    String text1;
    String text2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_server);
        //chatbox = (TextView) findViewById(R.id.textView2);
        Button connectButton = (Button) findViewById(R.id.connectserver);
        connectButton.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v){
                new ServerThread().execute();
            }
        });
    }
    //parameter string port (converted into int)
    //onprogressupdate (inputting string (?) into TextView)
    //on postexecute return null (?)
    public class ServerThread extends AsyncTask<String, String, String>{
        TextView chatbox;
        TextView amiconnected;

        @Override
        protected void onPreExecute(){
            chatbox = (TextView) findViewById(R.id.textView2);
            amiconnected = (TextView) findViewById(R.id.textView3);
            PORT = Integer.parseInt(((EditText) findViewById(R.id.editText1)).getText().toString());
        }
        @Override
        protected String doInBackground(String... arg0) {

            //open socket at specified port on the local host
            try {
                socket = new DatagramSocket(PORT);
                //listening

                byte[] buf = new byte[1024];
                DatagramPacket packet = new DatagramPacket(buf, buf.length);
                socket.receive(packet);
                text2 = new String("Now you're connected.");
                //convert received message to string
                text1 = new String(buf, 0, packet.getLength());

                //get client address from received packet
                //client_addr = packet.getAddress();
                //byte[] message = new byte[1024];

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return text2;
        }

        @Override
        protected void onPostExecute(String text2) {
            // TODO Auto-generated method stub
            super.onPostExecute(text2);
            chatbox.setText(text2);

        }   

    }


}

你需要移动你的UI采取的行动onPreExecute() or the onPostExecute()方法如doInBackground不能触摸UI。我建议您返回需要放入的字符串或值TextView来自doInBackground方法,然后将其应用到TextView in the onPostExecute()方法。参考异步任务描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 在 asynctask 中设置文本 的相关文章

  • Android ListView数组索引过滤后越界

    我认为这是专家的问题 我接到电话getView with positon 出界来自ListView数据列表 当我使用适配器过滤器时会发生这种情况 过滤器publishResults 方法使用小于原始列表的过滤列表填充数据 当新的过滤列表时似
  • Android x86_64 和 x86 模拟器在 AlertDialog.onClick 事件上崩溃

    我正在 x86 64 和 x86 模拟器中测试 Android 应用程序 在从显示列表的 AlertDialog 中选择一个项目后 它崩溃了 Android 模拟器意外关闭 AlertDialog 是从 AppCompatActivity
  • Android 已弃用屏幕尺寸?

    嘿 我需要在我的应用程序中获取屏幕的宽度 该应用程序将在 2 1 及更高版本上运行 我已经将其设置为如下所示 该方法已被弃用 我可能应该使用 getSize 或其他方式 但问题是 这是否适用于 3 0 和 4 0 等 Android 版本
  • Android 中的 JDBC 连接

    有没有人在 android 中尝试过 JDBC 连接 因为在 Android 2 3 中支持 JDBC 我必须在没有 Web 服务的情况下连接 Mysql 我已经提出申请 但它给了我错误 public class MysqlConnect
  • 横向模式下的 OnApplyWindowInsetsListener 用于检测键盘可见性变化

    感谢这里的这个很好的答案 https stackoverflow com a 63595830 741795 https stackoverflow com a 63595830 741795我们现在可以跟踪 Android 中何时显示键盘
  • 我应该保留远程数据库的本地副本吗?

    我正在开发一个应用程序 基本上允许人们创建 加入和管理其他人的群组 群组内的人也可以互相发送消息 我一直在想哪条路会更好 保留包含所有信息的远程数据库 包括发送给用户和从用户发送的消息 并让应用程序在每次需要信息时查询服务器 甚至是它以前见
  • sqlite 插入表中 select * from

    我需要在 Android 应用程序中将数据从一个表移动到另一个表 我想使用以下sql insert into MYTABLE2 select id STATUS risposta DATETIME now data ins from MYT
  • Android 6.0 缺乏访问相机服务的权限

    我在 Android 6 0 中使用 Camera2API 我在Android 5 0中没有报错 然而 当我在 Android 6 0 中使用我的代码时 我遇到了问题 问题是有时我可以成功打开相机并拍照 但有时相机打不开 出现错误 java
  • 自定义 ListView 具有不同的行布局,根据 Web 服务响应进行扩展

    我有列表视图 我有3组观点 图像视图 视频查看 文本视图 我有一个返回图像 视频和文本的网络服务器 因此 根据服务器的响应 我想膨胀列表视图中行的视图 我知道使用自定义适配器来扩展自定义布局 我想知道如何使用自定义适配器来扩充视图类型 例如
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • Oreo(API 26)-drawOverlay + 在状态栏上绘制

    在android oreo中 我无法使用WindowManager LayoutParams TYPE SYSTEM ERROR不再需要并且必须使用WindowManager LayoutParams TYPE APPLICATION OV
  • Android React-Native 中 MainActivity 不存在错误

    所以我收到 MainActivity 不存在错误 这可能是因为我将包和应用程序重命名为bomber to Bomber并将 appId 更改为com bomber to cool bomber android 我检查了 AndroidMan
  • 如何自动下载 Google 签名的通用 APK 以在 Google Play 之外分发?

    我有使用 Play 应用签名的应用 我想将应用程序上传到华为应用程序库 Google 建议从捆绑资源管理器下载已签名的通用 APK 然后上传到 Google Play 之外的商店 如果您还在 Google Play 之外分发您的应用或计划
  • 使用MockWebServer暂停功能测试

    我正在测试使用 MockWebServer 的挂起函数返回结果的 api 但它不适用于 runBlockingTest testCoroutineDispatcher testCorounieScope 除非launch使用builder
  • 更改弹出对话框的背景颜色

    我编写了显示弹出对话框的 android 代码 但我想将背景颜色从黑色更改为白色 然后更改文字颜色 这是对话框的代码 mPrefs PreferenceManager getDefaultSharedPreferences this Boo
  • 在Android中绘制圆角矩形

    我已经发现这个问题 https stackoverflow com questions 5618402 how to draw rounded rectangle in android ui解决方案是这段代码
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • Android 键盘清单未显示在设置中

    我正在制作我的第一个 Android 应用程序 我需要它作为键盘服务 据我所知 清单看起来不错 并且我有一个文件 WifiJoy java 在 com zwad3 wifijoy 包中 以及所有其他文件
  • Android 方向传感器的替代品是什么?

    大家好 我正在为 Android 构建 3D 游戏 我目前正在尝试在我的游戏中添加一个传感器 允许玩家倾斜机器人作为其控制 理想情况下 我想使用方向传感器 但我注意到它已被弃用 有谁知道如何检测 Android 中的倾斜并且不使用这个传感器
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN

随机推荐

  • 获取Map(TreeMap/HashMap)中对应最大值关联的key

    我编写了下面的代码来使用JAVA中的TreeMap找出具有最大值 整数 的键 字符串 public static void maxprofitItem int costs int prices int sales String items
  • Jquery 自动完成扩展器在回发后不起作用

    我在 ASP Net 中使用 Web 服务使用 jQuery 自动完成 我使用自动完成来过滤员工代码 当页面加载时 自动完成工作正常 但当我单击搜索按钮后 自动完成功能无法正常工作 我认为问题出在 document ready 函数上 所以
  • 在 C# 中将带有背景图像的图像保存到文件中

    我的表单上有一个图片框 BackgroundImage 属性设置为特定图像 图像的其余部分具有某些透明区域 以便在这些区域中显示背景图像 我想将其保存到文件中 但图片框没有保存方法 image属性有一个save方法 但是它只保存图像的内容
  • iReport 表,每行都有重复的附加记录

    我在整个互联网和这个论坛上进行了搜索 但我找不到实现如下表所示内容的方法 我在用着iReport 4 7 1 请给我一个提示吗 这很容易 您应该添加文本域元素到Detail下带文本字段与字段 这是一个示例 报告设计于iReport The
  • Phaser 3 中的阴影和定向光?

    我正在 Phaser 3 中制作一个自上而下的游戏 想要一个手电筒效果 有没有办法以锥形的方式向某个方向投射光 也许可以像这样工作 this flashlightBeam this lights add directionalLight x
  • 访问接口方法而不引用类

    假设我在一个名为 Interface 的项目中有一个这样的接口 public interface TestInterface string Operation 以及实现它的类 该类位于另一个项目 Class 中 public class T
  • Spark读取非UTF-8编码的整个文本文件

    我想通过以下方式读取非 UTF 8 编码的整个文本文件 val df spark sparkContext wholeTextFiles path 12 toDF 化为火花 如何更改编码 我想读取 ISO 8859 编码的文本 但它不是 C
  • IE 中 window.opener 的 JavaScript 问题

    我正在尝试使用以下 JavaScript 来检查弹出页面是否仍然打开 父页面 调用页面以打开弹出窗口 已打开 但此代码仍然失败 我从一个 aspx 弹出页面调用它 该页面在另一个母版页中有一个母版页 因此 最终调用此脚本的单击事件是内容占位
  • C# 中的 ref 和 out 参数不能标记为变体

    该声明的含义是什么 从这里 C 中的 ref 和 out 参数以及 不能被标记为变体 1 是否意味着不能进行以下操作 public class SomeClass
  • 删除异常值无法运行 cor.test()

    我正在从数据集的单列中提取异常值 然后我尝试运行cor test 在该列加上另一列 我收到错误 Error in cor test default dep delay noout distance x and y must have the
  • 如何更快地从 Firebase Firestore 获取数据?

    我是编程和 iOS 开发方面的新手 我正在尝试使用 Firebase 中的 Firestore 数据库制作一个应用程序 我不知道这是否正常 但是当我尝试从 firestore 数据库获取数据时 它对我来说似乎太长了 我不知道我是否犯了错误
  • 如何为 TGraphicControl 的后代组件添加鼠标滚轮支持?

    我创建了一个源自 TGraphicControl 的 delphi 组件 是否可以添加对鼠标滚轮的支持 编辑 我已经公开了 MouseWheel 事件 如下所示 但它们没有被调用 TMyComponent class TGraphicCon
  • GitHub 克隆错误:无法克隆并出现 EOF 错误

    我正在尝试使用 Ubuntu 13 04 从 GitHub 私人存储库克隆我的项目 我总是收到如下错误 error RPC failed result 18 HTTP code 200 17 KiB s fatal The remote e
  • 从 Excel 创建 Outlook 应用程序会生成类型不匹配错误

    我正在尝试使用 Outlook 模板创建 Outlook 电子邮件 On the Set obApp Outlook Application行 我收到错误 错误 13 类型不匹配 我似乎使用了本网站上有关该主题的其他帖子中使用的相同语法 我
  • 数据库继承的技术?

    当您需要将继承的类持久化到不支持继承的关系数据库时 有哪些技巧 技巧 假设我有一个经典的例子 Person gt Employee gt Manager gt Team lead gt Developer gt Customer gt Pr
  • 为 ASP.net 子控件生成 HTML“名称”属性,而不是唯一的“ID”属性

    为我的自定义 ASP net 服务器控件生成的 HTML 代码生成子控件的 name 属性 而不是 id 属性 像这样的东西 span span
  • HTTPWebResponse 原始响应,使用反射

    HTTPWebResponse 公开了 headers 的属性 是否可以获取原始响应就像我们使用套接字一样 标题和内容结合使用反射 我想一定有办法的 我可以使用套接字 但需要做很多工作才能使它们可用 例如代理支持 https 进度事件等 列
  • Javascript onclick 用 for 循环显示数组的最后一个元素

    我的问题不大 我正在研究一家公司的 KPI 我请求活动 他们给我返回一系列活动 这是代码的一部分 client requestActivities function activities if activities length gt 0
  • Android:视频录制抛出错误

    因此 我尝试使用内置相机活动来使用以下代码录制视频 Intent videoIntent new Intent MediaStore ACTION VIDEO CAPTURE videoIntent putExtra MediaStore
  • Android 在 asynctask 中设置文本

    我正在开发 UDP 程序 但我在申请时遇到问题setText in my asynctask 基本上在 UDP 服务器上 我只要求输入一个端口 然后服务器应该连接到本地主机和端口 ATextView布局中间显示 当前未连接 当我单击 连接到