我该如何修复此android错误?

时间:2018-04-18 07:12:19

标签: android android-runonuithread

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        if(isok){
            progressDialog.dismiss();
            Intent NextP = new Intent(RegisterEasyActivity.this,ActivityOTP.class);
            startActivity(NextP);
        }
        else{
            progressDialog.dismiss();
            switch (errorcode){
                case 1:
                    progressDialog.dismiss();
                    Toast.makeText(RegisterEasyActivity.this, "Number already registered", Toast.LENGTH_SHORT).show();
                    break;
                case 2:
                    progressDialog.dismiss();
                    Toast.makeText(RegisterEasyActivity.this, "Username already exist!", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    progressDialog.dismiss();
                    Toast.makeText(getBaseContext(), "Something wrong", Toast.LENGTH_SHORT).show();
            }
        }
    }
});

这是我得到的错误:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
                                                                            at android.os.Handler.<init>(Handler.java:200)
                                                                            at android.os.Handler.<init>(Handler.java:114)
                                                                            at android.widget.Toast$TN$2.<init>(Toast.java:336)
                                                                            at android.widget.Toast$TN.<init>(Toast.java:336)
                                                                            at android.widget.Toast.<init>(Toast.java:103)
                                                                            at android.widget.Toast.makeText(Toast.java:256)
                                                                            at com.create.owner.mydemopro.Activity.RegisterEasyActivity$3$2.run(RegisterEasyActivity.java:231)
                                                                            at java.lang.Thread.run(Thread.java:761)

我无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

您是从工作线程调用它。尝试此代码。

  new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                   if(isok){
                              progressDialog.dismiss();
                              Intent NextP = new Intent(RegisterEasyActivity.this,ActivityOTP.class);
                              startActivity(NextP);
                             }
                    else{
                           progressDialog.dismiss();
                           switch (errorcode){
                                  case 1:
                                        progressDialog.dismiss();
                                        Toast.makeText(RegisterEasyActivity.this, "Number already registered", Toast.LENGTH_SHORT).show();
                                        break;
                                        case 2:
                                        progressDialog.dismiss();
                                        Toast.makeText(RegisterEasyActivity.this, "Username already exist!", Toast.LENGTH_SHORT).show();
                                         break;
                                         default:
                                         progressDialog.dismiss();
                                         Toast.makeText(getBaseContext(), "Something wrong", Toast.LENGTH_SHORT).show();
                                            }
                                        }
                                    }
                }
            });