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 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 请问下这个红框里面是什么文档或者记事本编辑器
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)