Мой текущий проект включает загрузку данных с сервера - это занимает около 20 секунд, поэтому за это время я хочу отобразить индикатор выполнения, чтобы пользователь знал, что происходит. Задача загрузки выполняется внутри DownloadWebpageTask (AsyncTask), и я устанавливаю видимость индикатора выполнения в preExecute(), но она не отображается. Здесь я просматривал всю массу вопросов, и я до сих пор не могу заставить это работать. Если я не скрываю индикатор выполнения в onPostExecute(), я вижу, что происходит - даже если я установил progBar.setVisibility (0) в onPreExecute(), панель фактически не появляется до doInBackground. Я попытался установить TextView в onPreExecute, а также проверить, не работает ли индикатор выполнения, но это также не удалось.Индикатор выполнения не отображается в AsyncTask onPreExecute()
Пожалуйста, кто-нибудь может помочь мне здесь, я полностью застрял!
Это вызывает мое AsyncTask:
public void getDTCs(View view) throws URISyntaxException{
DtcListSingleton.getInstance().setData(null);
status = "DTC Parsing Not Attempted";
noDTCs = 0;
TextView listTitle = (TextView) findViewById(R.id.DTCtitle);
String newTitle = "Waiting for DTCs";
listTitle.setText(newTitle);
String stringURL = "http://192.168.1.129";
//Check connection
ConnectivityManager cMgr = (ConnectivityManager)getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo netInf = cMgr.getActiveNetworkInfo();
// If connected to network carry on with DTC request
if(netInf != null && netInf.isConnected()){
//Download the web page as an InputStream
new DownloadWebpageTask().execute(stringURL);
И это мой AsyncTask:
private class DownloadWebpageTask extends AsyncTask<String,Void,String>{
@Override
protected void onPreExecute(){
super.onPreExecute();
progBar = (ProgressBar)findViewById(R.id.loadingDTCs);
progBar.setVisibility(0);
TextView title = (TextView)findViewById(R.id.DTCtitle);
title.setText("Loading DTCs");
}
@Override
protected String doInBackground(String...urls){
//params[0] is the url
try{
return downloadUrl(urls[0]);
}
catch(IOException e){
return "Unable to retreieve web page. URL may be invalid.";
}
// DELETE if overcome client.print delay
catch (InterruptedException e) {
e.printStackTrace();
return "Interrupted Exception from Delaying inputstream";
}
}
@Override
protected void onPostExecute(String result){
AlertDialog.Builder resultURL = new AlertDialog.Builder(ActionReadDTCs.this);
resultURL.setTitle("Result of DownloadWebPageTask")
.setMessage(result)
.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int id){
progBar = (ProgressBar)findViewById(R.id.loadingDTCs);
progBar.setVisibility(8);
return;
}
})
.show();
}
}
Вы попробовали с .setVisibility (View.VISIBLE) – PedroHawk
Ваш минимальный/максимальный SDK и текущая версия Android-версии? –
это изменяет текст? title.setText ("Загрузка DTCs"); –