2012-05-04 21 views

risposta

21

È meglio provare con AsyncTask

codice di esempio -

private class YourAsyncTask extends AsyncTask<Void, Void, Void> { 
    private ProgressDialog dialog; 

    public YourAsyncTask(MyMainActivity activity) { 
     dialog = new ProgressDialog(activity); 
    } 

    @Override 
    protected void onPreExecute() { 
     dialog.setMessage("Doing something, please wait."); 
     dialog.show(); 
    } 

    protected Void doInBackground(Void... args) { 
     // do background work here 
     return null; 
    } 

    protected void onPostExecute(Void result) { 
     // do UI work here 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 
    } 
} 

Utilizzare il codice di cui sopra nella vostra Entrata tasto Attività. E, fare le cose in doInBackground e onPostExecute

Aggiornamento:

ProgressDialog è integrato con AsyncTask come lei ha detto il vostro compito richiede tempo per l'elaborazione.

Aggiornamento:

ProgressDialog classe è stata sconsigliata a partire dal API 26

+0

Voglio mostrare la finestra di avanzamento, non voglio usare AsyncTask penso – Hamza

+1

@AmeerHamza Aggiornamento della risposta. – Praveenkumar

+0

bene lo sveglierò – Hamza

71
ProgressDialog pd = new ProgressDialog(yourActivity.this); 
pd.setMessage("loading"); 
pd.show(); 

E questo è tutto ciò che serve.

+1

ProgressDialog pd = new ProgressDialog (yourActivity.this); pd.setMessage ("caricamento"); pd.show(); ora mostra tutto. Cosa fare. –

+0

Dovrai utilizzare la tua attività corrente anziché la tua attività. – Jave

+0

sto usando la mia attività .. –

1
ProgressDialog dialog = 
    ProgressDialog.show(yourActivity.this, "", "Please Wait..."); 
16

Punto uno si dovrebbe ricordare quando si tratta di Progress dialog è che si dovrebbe eseguire in un thread separato. Se lo esegui nel tuo thread dell'interfaccia utente, non vedrai alcuna finestra di dialogo.

Se si è nuovi a Android Threading, è necessario conoscere AsyncTask. Che ti aiuta ad implementare un painless Threads.

codice di esempio

private class CheckTypesTask extends AsyncTask<Void, Void, Void>{ 
     ProgressDialog asyncDialog = new ProgressDialog(IncidentFormActivity.this); 
     String typeStatus; 


     @Override 
     protected void onPreExecute() { 
      //set message of the dialog 
      asyncDialog.setMessage(getString(R.string.loadingtype)); 
      //show dialog 
      asyncDialog.show(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 

      //don't touch dialog here it'll break the application 
      //do some lengthy stuff like calling login webservice 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      //hide the dialog 
      asyncDialog.dismiss(); 

      super.onPostExecute(result); 
     } 

} 

Buona fortuna.

+0

La tua nota che "la finestra di dialogo di avanzamento non funzionerà sul thread principale dell'interfaccia utente" è stata la mia giornata. Grazie. –

+0

OnPreExecute e onPostExecute vengono eseguiti nella thread principale. E stai avviando e interrompendo la finestra di dialogo del progresso dal thread principale. – runios

0
 final ProgressDialog progDailog = ProgressDialog.show(Inishlog.this, contentTitle, "even geduld aub....", true);//please wait.... 

     final Handler handler = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       Barcode_edit.setText(""); 
       showAlert("Product detail saved."); 


      } 

     }; 

     new Thread() { 
      public void run() { 
       try { 
     } catch (Exception e) { 

       } 
       handler.sendEmptyMessage(0); 
       progDailog.dismiss(); 
      } 
     }.start(); 
+0

utilizza questo codice che ritengo utile per il tuo requisito ... dammi il tasso .. – KeTaN

2

Questo è il buon modo per utilizzare finestra

private class YourAsyncTask extends AsyncTask<Void, Void, Void> { 

    ProgressDialog dialog = new ProgressDialog(IncidentFormActivity.this); 

    @Override 
    protected void onPreExecute() { 
     //set message of the dialog 
     dialog.setMessage("Loading..."); 
     //show dialog 
     dialog.show(); 
     super.onPreExecute(); 
    } 

    protected Void doInBackground(Void... args) { 
    // do background work here 
    return null; 
    } 

    protected void onPostExecute(Void result) { 
    // do UI work here 
    if(dialog != null && dialog.isShowing()){ 
     dialog.dismiss() 
    } 

    } 
} 
1

Dichiarare il vostro finestra di avanzamento:

ProgressDialog progressDialog; 

Per avviare la finestra di avanzamento:

progressDialog = ProgressDialog.show(this, "","Please Wait...", true); 

Per chiudere la Finestra di dialogo di avanzamento:

progressDialog.dismiss(); 
1
ProgressDialog pd = new ProgressDialog(yourActivity.this); 
pd.show(); 
+2

Mentre questo fornisce una risposta diretta alla domanda, questo in genere sarebbe considerato di bassa qualità su Stack Overflow perché non fornisce alcun contesto o spiegazione. Si prega di considerare l'espansione della risposta. –

0

Fase 1: Creata un file XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <Button 
     android:id="@+id/btnProgress" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="Progress Dialog"/> 
</LinearLayout> 

Passaggio 2: Creare un SampleActivity.java

package com.scancode.acutesoft.telephonymanagerapp; 


import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class SampleActivity extends Activity implements View.OnClickListener { 
    Button btnProgress; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnProgress = (Button) findViewById(R.id.btnProgress); 
     btnProgress.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     final ProgressDialog progressDialog = new ProgressDialog(SampleActivity.this); 
     progressDialog.setMessage("Please wait data is Processing"); 
     progressDialog.show(); 

//  After 2 Seconds i dismiss progress Dialog 

     new Thread(){ 
      @Override 
      public void run() { 
       super.run(); 
       try { 
        Thread.sleep(2000); 
        if (progressDialog.isShowing()) 
         progressDialog.dismiss(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     }.start(); 
    } 
} 
11

Per utilizzare ProgressDialog utilizzare il codice qui sotto

ProgressDialog progressdialog = new ProgressDialog(CurrentActivity.this); 
progressdialog.setMessage("Please Wait...."); 

Per avviare l'uso ProgressDialog

progressdialog.show(); 

progressdialog.setcancelable(false); viene utilizzato in modo che ProgressDialog non possono essere cancellati fino a quando il lavoro è fatto.

Per interrompere l'ProgressDialog uso di questo codice (quando il lavoro è finito):

progressdialog.dismiss();` 
1

quando si chiama in OnCreate()

new LoginAsyncTask().execute(); 

Ecco come utilizzare nel flusso ..

ProgressDialog progressDialog; 

    private class LoginAsyncTask extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     progressDialog= new ProgressDialog(MainActivity.this); 
     progressDialog.setMessage("Please wait..."); 
     progressDialog.show(); 
     super.onPreExecute(); 
    } 

    protected Void doInBackground(Void... args) { 
     // Parsse response data 
     return null; 
    } 

    protected void onPostExecute(Void result) { 
     if (progressDialog.isShowing()) 
         progressDialog.dismiss(); 
     //move activity 
     super.onPostExecute(result); 
    } 
} 
1
final ProgressDialog loadingDialog = ProgressDialog.show(context, 
    "Fetching BloodBank List","Please wait...",false,false); // for showing the 
    // dialog where context is the current context, next field is title followed by 
    // message to be shown to the user and in the end intermediate field 
    loadingDialog.dismiss();// for dismissing the dialog 

per m Informazioni minerale Android - What is difference between progressDialog.show() and ProgressDialog.show()?

0

ProgressDialog è ora ufficialmente deprecato in Android O. Io uso DelayedProgressDialog da https://github.com/Q115/DelayedProgressDialog per ottenere il lavoro fatto.

Usage:

DelayedProgressDialog progressDialog = new DelayedProgressDialog(); 
progressDialog.show(getSupportFragmentManager(), "tag"); 
0

ProgressDialog è deprecato dal API 26

ancora si può usare questo:

public void button_click(View view) 
{ 
    final ProgressDialog progressDialog = ProgressDialog.show(Login.this,"Please Wait","Processing...",true); 
} 
Problemi correlati