2012-06-11 8 views
6

Ich habe ein Alarmdialogfeld in meiner Anwendung für Login-Authentifizierung. Während die Anfrage zu senden ich will einen Fortschrittsbalken zeigen und entlassen wollen, wenn die Antwort mir success.please zu helfen, wenn jemand knows.Iam den folgenden Code verwendet:
zeigt Fortschrittsbalken im Alarmdialog

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

Verwenden Sie asynchrone Aufgabe für diese, http://droidapp.co.uk/?p=177 – Aerrow

+0

es könnte einfacher sein, wenn Sie Ihr Layout in Xml – jiduvah

+0

definieren sollten, wie ich das tun kann ... bitte helfen Sie mir jiduvah –

Antwort

24

Es könnte einfacher sein, diese

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

Sie können mehr über die Fortschritte Dialoge lesen here

würde zurückzutreten

dialog.dismiss(); 
+0

Wie kann ich es abbrechen, wenn die Authentifizierungsantwort erfolgreich ist?!? –

+0

ich für Sie aktualisiert – jiduvah

+0

das würde einen neuen Dialog öffnen, nicht? Ist das der gewünschte Effekt? Sie können auch einen Fortschrittdialog zum Dialog selbst hinzufügen – MikeIsrael

1

Try Code unten

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(); 
     } 
    } 

} 

und nennen dies in Onclick-Ereignis

new DownloadingProgressTask().execute(); 
+0

können Sie meinen Code bearbeiten und mir sagen, wie Sie es in meiner Anwendung implementieren –

+0

Ich habe Code bearbeitet. überprüfen Sie bitte – Nirali

4

Wenn Sie die Fortschrittsbalken zeigen wollen, versuchen Sie die folgenden Schritte und Sie können auch den gesamten Code kopieren und fügen Sie den relevanten Teil Ihres Codes und es sollte funktionieren.

//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(); 

Die Abbrechen-Schaltfläche sollte den Dialog schließen.

+0

Fügen Sie einfach .start() nach dem Erstellen von Threads hinzu. – jelic98

Verwandte Themen