Définir la progression de la boîte de dialogue
J'ai une Tâche Asynchrone à ne pas augmenter le pourcentage alors que c'est en passant par la tâche. Il reste toujours à 0% 0/100
Voici mon code
private class getAppInfo extends AsyncTask<String, String, String> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
ProgressDialog dialog;
@Override
protected void onPreExecute() {
if(showLoading == true){
dialog = new ProgressDialog(SelfHelp.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMessage("Loading");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.setMax(100);
dialog.setProgress(100);
dialog.show();
}
}
@Override
protected String doInBackground(String... urls) {
String xml = null;
int count = 0;
try {
//defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urls[0]);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
while(count != 100){
publishProgress(""+count);
count += 5;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Document doc = parser.GetDomElement(xml);
NodeList nl = doc.getElementsByTagName("topic");
getChildElements(nl);
return xml;
}
@Override
protected void onProgressUpdate(String... progress) {
Log.v("count",progress[0]);
dialog.setProgress(Integer.parseInt(progress[0]));
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
@Override
protected void onPostExecute(String result) {
//dialog.setProgress(100);
menuList.setAdapter(setListItems(menuItems));
menuList.setTextFilterEnabled(true);
if(showLoading == true){
dialog.dismiss();
showLoading = false;
}
}
Il ne vont dans onProgressUpdate
et le comte monte par 5 mais la barre de progression ne change pas. Comment puis-je augmenter par tranche de 5 et de montrer les progrès correctement?
source d'informationauteur BigT
Vous devez vous connecter pour publier un commentaire.
Votre problème est lié à la
setIndeterminate(true)
: Vous devez le régler àfalse
si vous voulez avoir la mise à jour des progrès. si voussetIndeterminate(true)
puis le ProgressDialog fonctionnera comme le classique de Windows SablierVous pouvez essayer le code suivant, C'est de montrer les progrès réalisés en % ratio d', voici le code,
Voir la sortie,
Je vais mentionner une autre approche, parce que je suis tombé sur cette solution quand j'étais à la recherche pour certains de façon pratique comment communiquer auprès de mon Service en cours d'exécution AsyncTask retour à la page principale de l'INTERFACE utilisateur. Lucifer est la solution n'est pas modulaire pour les Services, si vous devez utiliser votre Service dans plus de 1 classe (c'était mon cas), vous ne serez pas en mesure d'accéder à une variable de gestionnaire et comme je sais que vous ne pouvez même pas l'envoyer en tant que Gestionnaire de l'Intention de Service (vous pouvez l'envoyer à AsyncTask tho). La Solution est de radiodiffusion.
dans AsyncTask et
dans votre activité.
Je n'aime pas toutes ces classes internes android par les développeurs. Je comprends que c'est plus facile de créer intérieure et extérieur accès de variables de classe, mais une fois que vous avez besoin d'utiliser la classe à nouveau votre condamnés et vous devez modifier le code! Je suis vraiment nouvelle pour Android, peut-être que je me trompe et que vous avez réellement n'avez pas besoin de réutiliser ces classes. N'a jamais fait un plus gros projet donc je n'ai aucune idée, mais il ne fonctionne tout simplement pas, car sur le collège, ils ont essayé de nous enseigner comment programmer un code réutilisable.