Je veux une barre de progression, mais à obtenir un spinner progressdialog
Je suis en utilisant un public AsynTask pour télécharger les données, et je suis en train d'afficher une barre de progression qui permettrait de voir la progression du téléchargement. Je pense que j'ai le bon code, mais tout ce que j'obtiens est un spinner progressdialog. Ai-je raté quelque chose? Pourquoi n'est-ce pas la barre de progression montrant? Voici le code.
Merci pour tous les pointeurs.
public class FileDownloader extends AsyncTask<String, Integer, Void>
{
private Context _appContext;
private HttpURLConnection _urlConn;
private ProgressDialog _progressDia = null;
private DialogInterface.OnCancelListener _progDiaCancelListener = new DialogInterface.OnCancelListener()
{
/**
* When the progress dialog is canceled, stop the GET request.
*/
public void onCancel(DialogInterface dialog)
{
FileDownloader.this.cancel(true);
}
};
/**
* Constructor.
* @param appContext
*/
public FileDownloader(Context appContext)
{
_appContext = appContext;
_progressDia = new ProgressDialog(_appContext, ProgressDialog.STYLE_HORIZONTAL);
_progressDia.setMax(100);
_progressDia.setTitle(_appContext.getString(R.string.diaHeader1));
_progressDia.setMessage(_appContext.getString(R.string.diaBody1));
_progressDia.setCancelable(true);
_progressDia.setIndeterminate(false);
_progressDia.setOnCancelListener(_progDiaCancelListener);
}
//Runs on the UI thread
@Override
protected void onPreExecute()
{
_progressDia.setProgress(0);
_progressDia.show();
}
@Override
protected Void doInBackground(String... args)
{
String dloadURL = args[0],
saveLoc = args[1];
...
...
while((len = input.read(buf)) > 0)
{
output.write(buf, 0, len);
total += len;
publishProgress((int)total * 100/lenghtOfFile);
}
...
...
}
catch(SocketTimeoutException ex)
{
}
finally
{
...
}
//This is executed on main UI thread.
@Override
protected void onProgressUpdate(Integer... values)
{
_progressDia.setProgress(values[0]);
}
@Override
protected void onCancelled()
{
...
}
//This is executed on main UI thread.
@Override
protected void onPostExecute(Void result)
{
removeProgressDialog();
...
}
/**
* Remove the message dialog, if still showing.
*/
private void removeProgressDialog()
{
if(_progressDia != null && _progressDia.isShowing())
_progressDia.dismiss();
}
}
OriginalL'auteur Samik R | 2010-07-24
Vous devez vous connecter pour publier un commentaire.
Probablement vous oubliez de définir
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
Voir cet exemple de code qui fonctionne moi:
Merci, m'a aidé aussi. Mon erreur est que j'ai été appeler
ProgressDialog.show(...);
et après que le réglage de tous les autres paramètresOriginalL'auteur Pentium10
Il semble que vous êtes en utilisant les deux arg constructeur de ProgressDialog, ce qui suggère la documentation est pour le Contexte (le premier arg) et l'id de thème (la deuxième arg).
http://developer.android.com/reference/android/app/ProgressDialog.html#ProgressDialog(android.content.Context, int)
Ainsi, alors que vous PENSEZ que vous êtes le réglage de la ProgressStyle à STYLE_HORIZONTAL, vous ne faites pas cela, vous définissez l'id de thème à quelque chose qui n'est probablement pas un thème valide id.
Je voudrais suggérer à l'aide de l'un arg constructeur qui prend dans un Contexte, et ensuite faire comme Pentium10 suggère et appel _progressDia.setProgressStyle(ProgressStyle.STYLE_HORIZONTAL);
OriginalL'auteur nicholas.hauschild
vous pouvez aussi lui donner cette balise dans le fichier xml
style="@android:style/Widget.La ProgressBar.Horizontale"
OriginalL'auteur schwiz
faire de l'entrée de la barre de progression
dans votre projet android intention courante fichier XML comme une barre de progression
également vérifier après l'enregistrement
dans R.java fichier pour l'id de votre barre de progression
l'intention doit être appelée chaque fois que le téléchargement est lancé
comme
startActivity(new Intent(this, Progress.class));
OriginalL'auteur Sagar Varpe