5

En mi aplicación, tengo una vista de lista y cada elemento tiene un botón. Si el usuario hace clic en el botón, quiero ejecutar alguna conexión http. Así que uso AsyncTask en la clase de Adaptador. Ahora el problema es que el diálogo de progreso no se muestra.Android: ProgressDialog no aparece en la clase de adaptador

private class MyClass extends AsyncTask<Void, Long, Boolean> { 
     private Context context; 
     private ServerCall call = new ServerCall(); 
     private ProgressDialog progressDialog1; 

     public MyClass(Context context) { 
      this.context = context; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      try { 
       progressDialog1 = ProgressDialog.show(context, "", 
         "Please wait...", true); 
       progressDialog1.setIndeterminate(true); 

      } catch (final Throwable th) { 

      } 

     } 

     @Override 
     protected void onProgressUpdate(Long... values) { 

      super.onProgressUpdate(values); 
     } 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      //some tasks 

      return true; 
     } 

     @Override 
     protected void onPostExecute(Boolean result) { 
      if (mode.equalsIgnoreCase("History")) { 

       Intent order = new Intent(context, ActicityA.class); 
       order.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(order); 

      } else { 
       Intent order = new Intent(context, ActivityB.class); 
       order.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(order); 
      } 

     } 
    } 
+0

se onPreExcute() método llamado? Necesitamos más información. –

+0

@LazyNinja sí onPreExcute() llamado. Lo veo en lagcat – Sridhar

+0

¿Por qué no registras la excepción en el bloque catch dentro del método preExecute? Si obtiene una excepción allí, sabrá cuál es el problema. – Sameer

Respuesta

-1

Es cierto que ProgressDialog.show() método devuelve una obect ProgressDialog, pero es mejor crear primero un objeto de ProgressDialog como:

ProgressDialog progressDialog1 = new ProgressDialog(); 

y luego

progressDialog1 = ProgressDialog.show(context, "", 
         "Please wait...", true); 

Y también, tratar de termine el progressDialog1 en onPostExecute() llamando a su método dismiss().

+0

No puedo ejecutar progressDialog1 = new ProgressDialog() esto, porque su sintaxis es nueva ProgressDialog (context). así que lo puse en constructor. Pero todavía progressdialog no muestra – Sridhar

+0

aquí en lugar de ProgressDialog progressDialog1; use ProgressDialog progressDialog1 = ProgreassDialog (YourParentActivity.this); Y llame al progressDialog1 como this.progressDialog.show(); – Shrikant

+0

Utilizo esta clase de adaptador para dos actividades, entonces, ¿cómo podría obtener actividad para padres? – Sridhar

0

probar este lugar'

protected void onPreExecute() { 
     dialog = new ProgressDialog(Activity.this); 
     dialog.setMessage("Please wait..."); 
     dialog.setIndeterminate(true); 
     //dialog.setCancelable(false); 
     dialog.show(); 
    } 
0
Follow this steps 
    [0] start showing progressbar 
    [1] Execute AsyncTask class 
    [2] in this class one interface for post the response in main class 
    [3] Declare one interface class 
    [4] get Reponse in Main Clss using interface 
    [5] dismiss Progressbar and Bind your Data 

    ex. 
    [0] 

      progr.setVisibility(View.VISIBLE); 
    [1] 
        MyTask task = new MyTask(); 
       task.setdata(new SendData() { 
    [4]    @Override 
        public void GetStringResponse(String str) { 
         Log.i(General.TAG, TAG + " Overide GetString-"+str);      
         final String GetResponse=str; 
        // here you get response and parse it 
    [5]        // here you can dismiss your progress bar       
        } 
       }); 
       task.execute(new String[] {Newsurl[Id]}); 


    [2] Add interface here with Method 

    SendData objsend; 

    @Override 
     protected void onPostExecute(String Result) 
     { 
      Log.i("**********", Result);   
      objsend.GetStringResponse(Result); 
     } 

     public void setdata(SendData sendd) 
     { 
      Log.i(General.TAG,TAG+"Initialise Interface object"); 
      objsend = sendd; 
     } 

[3] interface class 
    public interface SendData {  
    public abstract void GetStringResponse(String str); 
} 
+0

Coloco AsyncTask dentro de una clase de adaptador, y esta clase de adaptador es independiente – Sridhar

+0

k entendí tu punto –

0
<pre><code> 
public MyClass(Context context) { 
     this.context = context; 
     progressDialog1=new ProgressDialog(context); 
    } 

@ Override protected void OnPreExecute() {

progressdialog1.setMessage("please wait while loading"); 
    progressdialog1.setIndeterminate(true); 

    } 

Cuestiones relacionadas