qq_30895577 2019-06-17 20:51 采纳率: 100%
浏览 349
已结题

如何使用AsyncTask 创建Toast?

如何使用AsyncTask 创建Toast?

 @SuppressLint("StaticFieldLeak")
    private class RegistrationSuccess extends AsyncTask {
        @Override
        protected Object doInBackground(Object[] objects) {
            return null;
        }

        @Override
        protected void onPreExecute() {
            registerButton.setText("注册成功");
//            Toast.makeText(Register.this, "注册成功", Toast.LENGTH_SHORT).show();
            super.onPreExecute();
        }
    }

代码中的

    Toast.makeText(Register.this, "注册成功", Toast.LENGTH_SHORT).show();

不生效~~~

调用处的代码是OnCreate的一段

 new Thread() {
                        public void run() {
                            try {
                                astr = futureTask.get();
                                Log.e("HelloWorldActivity", astr);
                                if (astr.equals("OK")) {
                                    Log.e("HelloWorldActivity", astr);
                                    RegistrationSuccess registrationSuccess = new RegistrationSuccess();
                                    registrationSuccess.execute();
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();//开启线程
  • 写回答

2条回答 默认 最新

  • YDimanche 2019-06-18 10:22
    关注

    AsyncTask本身就是一种异步,然后你又讲它放入一个线程中,这个时候你在AsyncTask中进行toast显示相当于在子线程中进行更新UI的操作,不闪退已经不错了,
    这个解决方案有两种,在启动AsyncTask时直接去掉new Thread(强烈推荐),或者在主线程中创建一个handler,然后在AsyncTask中通过message发送消息至主线程中
    的handler中进行toast操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入