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