Mostrando la barra de progreso en el diálogo de alerta

Tengo un cuadro de diálogo de alerta en mi aplicación para la autenticación de inicio de sesión. Al enviar la petición quiero mostrar una barra de progreso y quiero descartar si la respuesta es success.please me ayudan si alguien sabe. Estoy usando el siguiente código:

final AlertDialog.Builder alert = new AlertDialog.Builder(this); LinearLayout login = new LinearLayout(this); TextView tvUserName = new TextView(this); TextView tvPassword = new TextView(this); TextView tvURL = new TextView(this); final EditText etUserName = new EditText(this); final EditText etPassword = new EditText(this); final EditText etURL = new EditText(this); login.setOrientation(1); // 1 is for vertical orientation tvUserName.setText(getResources().getString(R.string.username)); tvPassword.setText(getResources().getString(R.string.password)); tvURL.setText("SiteURL"); login.addView(tvURL); login.addView(etURL); login.addView(tvUserName); login.addView(etUserName); login.addView(tvPassword); etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); login.addView(etPassword); alert.setView(login); alert.setTitle(getResources().getString(R.string.login)); alert.setCancelable(true); alert.setPositiveButton(getResources().getString(R.string.login), new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, int whichButton) { strhwdXml = etURL.getText().toString(); strUserName = etUserName.getText().toString(); XmlUtil.username = strUserName; strPassword = etPassword.getText().toString(); if ((strUserName.length() == 0) && (strPassword.length() == 0) && (strhwdXml.length() == 0)) { Toast.makeText( getBaseContext(), getResources().getString( R.string.userPassword), Toast.LENGTH_SHORT).show(); onStart(); } else { final SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor prefsEditor = prefs .edit(); try { StringBuffer inStreamBuf = new StringBuffer(); inStreamBuf = XmlUtil .getLoginAuthResponse(strUserName, strPassword, strhwdXml); strXmlResponse = inStreamBuf.toString(); Log.e("Response:", strXmlResponse); String parsedXML = ParseResponse(strXmlResponse); if (parsedXML .equalsIgnoreCase(getResources() .getString(R.string.success))) { } 

Podría ser más fácil usar esto

 ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", "Loading. Please wait...", true); 

Puede leer más acerca de los diálogos de progreso aquí

Para cancelar sería

  dialog.dismiss(); 

Si desea mostrar la barra de progreso, pruebe los siguientes pasos y también puede copiar y pegar el código completo de la parte relevante de su código y debería funcionar.

 //the first thing you need to to is to initialize the progressDialog Class like this final ProgressDialog progressBarDialog= new ProgressDialog(this); //set the icon, title and progress style.. progressBarDialog.setIcon(R.drawable.ic_launcher); progressBarDialog.setTitle("Showing progress..."); progressBarDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //setting the OK Button progressBarDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int whichButton){ Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show(); } }); //set the Cancel button progressBarDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int whichButton){ Toast.makeText(getApplicationContext(), "Cancel clicked", Toast.LENGTH_SHORT).show(); } }); //initialize the dialog.. progressBarDialog.setProgress(0); //setup a thread for long running processes new Thread(new Runnable(){ public void run(){ for (int i=0; i<=15; i++){ try{ Thread.sleep(1000); progressBarDialog.incrementProgressBy((int)(5)); } catch(InterruptedException e){ e.printStackTrace(); } } //dismiss the dialog progressBarDialog.dismiss(); } }); //show the dialog progressBarDialog.show(); 

El botón Cancelar debe descartar el diálogo.

Intente abajo el código

  private class DownloadingProgressTask extends AsyncTask<String, Void, Boolean> { private ProgressDialog dialog = new ProgressDialog(ShowDescription.this); /** progress dialog to show user that the backup is processing. */ /** application context. */ protected void onPreExecute() { this.dialog.setMessage("Please wait"); this.dialog.show(); } protected Boolean doInBackground(final String... args) { try { // write your request code here **StringBuffer inStreamBuf = new StringBuffer(); inStreamBuf = XmlUtil .getLoginAuthResponse(strUserName, strPassword, strhwdXml); strXmlResponse = inStreamBuf.toString(); Log.e("Response:", strXmlResponse); String parsedXML = ParseResponse(strXmlResponse); if (parsedXML .equalsIgnoreCase(getResources() .getString(R.string.success))) {** return true; } catch (Exception e) { Log.e("tag", "error", e); return false; } } @Override protected void onPostExecute(final Boolean success) { if (dialog.isShowing()) { dialog.dismiss(); } if (success) { Toast.makeText(ShowDescription.this, "File successfully downloaded", Toast.LENGTH_LONG) .show(); imgDownload.setVisibility(8); } else { Toast.makeText(ShowDescription.this, "Error", Toast.LENGTH_LONG) .show(); } } } 

Y llame esto al evento onclick

 new DownloadingProgressTask().execute(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.