我想顯示5secs了一圈不確定的進度欄我的驗證的AsyncTask裏面,問題是5secs我的應用程序崩潰,的進度添加定時器()裏面的AsyncTask
後的錯誤是:「只有創建原來的線程視圖層次結構可以觸及其視圖。「
我對我的進度條使用了Timer。
class VerifyStudIDTask extends AsyncTask<String, Void, String> {
// use doInBackground() to make network calls, the returned value is
// sent to onPostExecute()
@Override
protected String doInBackground(String... data) {
String StudID = data[0];
if (StudID.replace(" ", "").isEmpty()) {
f8 = true;
return "1";
}
else if (StudID.contains(" "))
{
f8 = true;
return "2";
}
else if (!StudID.matches("\\d+"))
{
f8 = true;
return "3";
}
else if(checkIfSameStudID(StudID))
{
f8 = true;
return "4";
}
else
{
f8 = false;
return "5";
}
}
@Override
protected void onPreExecute() {
loading_bar.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
long delayInMillis = 5000;
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
loading_bar.setVisibility(View.INVISIBLE);
}
}, delayInMillis);
tilStudID.setErrorEnabled(true);
switch(result)
{
case "1": tilStudID.setError("You can't leave this empty.");break;
case "2": tilStudID.setError("No spaces allowed.");break;
case "3": tilStudID.setError("Numbers only.");break;
case "4": tilStudID.setError("Student ID already used.");break;
default: tilStudID.setError(null);tilStudID.setErrorEnabled(false);break;
}
}
}
謝謝!有效! :d –