2012-06-11 22 views
6

Tengo un cuadro de diálogo de alerta en mi aplicación para autenticación de inicio de sesión. Al enviar la solicitud quiero mostrar una barra de progreso y quiero descartar si la respuesta es success.please me ayude si alguien knows.Iam con el siguiente código:
que muestra la barra de progreso en el cuadro de diálogo de alerta

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))) { 
       } 
+0

Utilice la tarea asíncrona para esto, http://droidapp.co.uk/?p=177 – Aerrow

+0

podría ser más fácil si tuviera que definir su diseño en xml – jiduvah

+0

cómo puedo hacer esto ... ayúdenme por favor jiduvah –

Respuesta

24

Podría ser más fácil de usar este

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

puede leer más sobre los diálogos de progreso here

Para cancelar habría

dialog.dismiss(); 
+0

cómo cancelarlo si la respuesta de autenticación es exitosa?!? –

+0

he actualizado para usted – jiduvah

+0

que abriría un nuevo cuadro de diálogo, ¿no? ¿Es ese el efecto deseado? También puede agregar un diálogo de progreso al cuadro de diálogo – MikeIsrael

1

Try continuación 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 llamar a esto en evento onclick

new DownloadingProgressTask().execute(); 
+0

¿Puedes editar mi código y decirme cómo implementarlo en mi aplicación –

+0

? Tengo código editado. por favor marque – Nirali

4

Si desea que la barra de progreso para mostrar, probar los siguientes pasos y también se puede copiar y pegar todo el código 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 cerrar el cuadro de diálogo.

+0

Solo agregue .start() después de la creación del hilo. – jelic98

Cuestiones relacionadas