警告对话框和异步任务 [英] Alert Dialog and ASync Task

查看:184
本文介绍了警告对话框和异步任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用警报对话框和异步任务的活动,我收到以下错误


  

引起:了java.lang.RuntimeException:无法创建内部处理
  线程已经不叫活套。prepare()


code:

 公共类loginTask扩展的AsyncTask<太虚,太虚,太虚> {
    公共ProgressDialog =的LoginDialog新ProgressDialog(
            LoginActivity.this);    @覆盖
    在preExecute保护无效(){
        loginDialog.setMessage(请等待登录);
        loginDialog.show();
    }    @覆盖
    保护无效doInBackground(虚空...... PARAMS){        如果(loginUser()){
            loginDialog.dismiss();
            alertbox(称号,winnn,好);
        }其他{
            loginDialog.dismiss();
            alertbox(称号,消息,好);
        }
        返回null;
    }    @覆盖
    保护无效onPostExecute(虚空未使用){
        loginDialog.dismiss();
        意图int​​entHome =新意图(LoginActivity.this,
                HomeActivity.class);
        startActivity(intentHome);
    }
}


解决方案

您不能更新直接在 doInBackground()方法内UI。 (是的,如果你仍然要执行,然后写相同里面的 runOnUiThread() doInBackground里面的方法()

否则,做了 onPostExecute()方法内。

 公共类loginTask扩展的AsyncTask<太虚,太虚,太虚>
{
    公共ProgressDialog =的LoginDialog新ProgressDialog(LoginActivity.this);
    公共布尔标志;    @覆盖
    在preExecute保护无效(){
        loginDialog.setMessage(请等待登录);
        loginDialog.show();
    }    @覆盖
    保护无效doInBackground(虚空...... PARAMS){
        如果(loginUser())
          标志=真实的;
        其他
          标志= FALSE;        返回null;
    }    @覆盖
    保护无效onPostExecute(虚空未使用){
        loginDialog.dismiss();        如果(标志)
          alertbox(称号,winnn,好);
        其他
          alertbox(称号,消息,好);
    }
}

i am trying to use Alert Dialog Box and Async Task in the activity and am getting the following error

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Code:

public class loginTask extends AsyncTask<Void, Void, Void> {
    public ProgressDialog loginDialog = new ProgressDialog(
            LoginActivity.this);

    @Override
    protected void onPreExecute() {
        loginDialog.setMessage("Please wait Logging in");
        loginDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {

        if(loginUser()) {
            loginDialog.dismiss();
            alertbox("title", "winnn", "Okay");
        } else {
            loginDialog.dismiss();
            alertbox("title", "message", "Okay");
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void unused) {
        loginDialog.dismiss();
        Intent intentHome = new Intent(LoginActivity.this,
                HomeActivity.class);
        startActivity(intentHome);
    }
}

解决方案

You can't update UI inside the doInBackground() method directly. (Yes if you still want to execute then write the same inside the runOnUiThread() method inside the doInBackground())

Otherwise, do it inside the onPostExecute() method.

public class loginTask extends AsyncTask<Void, Void, Void> 
{
    public ProgressDialog loginDialog = new ProgressDialog( LoginActivity.this );
    public Boolean flag;

    @Override
    protected void onPreExecute() {
        loginDialog.setMessage("Please wait Logging in");
        loginDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        if(loginUser())
          flag = true;
        else 
          flag=false;

        return null;
    }

    @Override
    protected void onPostExecute(Void unused) {
        loginDialog.dismiss();

        if(flag)
          alertbox("title", "winnn", "Okay");
        else
          alertbox("title", "message", "Okay");
    }
}

这篇关于警告对话框和异步任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆