您好,我正在尝试执行下面的代码,假设打开一个加载对话框并在 if
语句中将其关闭。
这是代码:
loginBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
final ProgressDialog progress = ProgressDialog.show(thisActivity, "Please wait", "Loading please wait..", true);
Thread loginThread = new Thread(new Runnable()
{
@Override
public void run()
{
try
{
boolean userAllowed = login.loginUser(userEmail.getText().toString(), userPass.getText().toString());
if(userAllowed)
{
progress.dismiss();
startActivity(mainPage);
}
else
{
progress.dismiss();
Toast.makeText(context, "Invalide email and password", Toast.LENGTH_LONG).show();
}
}
catch (Exception e)
{
Toast.makeText(context, "There is some problem", Toast.LENGTH_LONG).show();
}
}
});
loginThread.start();
}
});
logCat 错误输出为:
05-09 22:37:26.508: E/AndroidRuntime(24820): FATAL EXCEPTION: Thread-1306
05-09 22:37:26.508: E/AndroidRuntime(24820): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
05-09 22:37:26.508: E/AndroidRuntime(24820): at android.os.Handler.<init>(Handler.java:197)
05-09 22:37:26.508: E/AndroidRuntime(24820): at android.os.Handler.<init>(Handler.java:111)
05-09 22:37:26.508: E/AndroidRuntime(24820): at android.widget.Toast$TN.<init>(Toast.java:324)
05-09 22:37:26.508: E/AndroidRuntime(24820): at android.widget.Toast.<init>(Toast.java:91)
05-09 22:37:26.508: E/AndroidRuntime(24820): at android.widget.Toast.makeText(Toast.java:238)
05-09 22:37:26.508: E/AndroidRuntime(24820): at com.shale.activities.MainActivity$1$1.run(MainActivity.java:93)
05-09 22:37:26.508: E/AndroidRuntime(24820): at java.lang.Thread.run(Thread.java:856)
我的引用号是this教程。
谢谢!
最佳答案
如日志中所示:
RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
意味着您正在尝试从非 ui Thread 更新或访问 UI 元素。所以你需要使用 Activity.runOnUiThread , Handler或 AsyncTask
用于从其他线程更新或访问 UI。这样做:
Your_Activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//update Ui elements here
}
});
关于java - Android 进度对话框在线程中关闭时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469799/