studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-asynctask android-adapter android-context

programacion - Android: ProgressDialog no aparece en la clase de adaptador



manual de programacion android pdf (4)

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.

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


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

ProgressDialog progressDialog1 = new ProgressDialog();

y entonces

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

Y también, intente finalizar el progressDialog1 en onPostExecute() llamando a su método onPostExecute() .


Prueba esto en su lugar ''

protected void onPreExecute() { dialog = new ProgressDialog(Activity.this); dialog.setMessage("Please wait..."); dialog.setIndeterminate(true); //dialog.setCancelable(false); dialog.show(); }


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


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