2016-10-17 2 views
-2

Ich möchte die Fortschrittsanzeige in Async-Task onPreExecute() anzeigen. Aber ich bin nicht in der Lage, die context zu übergeben. Kann jemand helfen?Fortschrittsleiste in Async-Aufgabe in Android anzeigen

public class myClass extends AsyncTask<Void,Void,Void>{ 
    Context ctx; 
    ProgressDialog d; 
    String s; 


    public myClass (String S, Context con) { 
     this.ctx = con; 
     this.s = S; 
    } 


    @Override 
     protected void onPreExecute() { 
      d = new ProgressDialog(this.ctx); 
      d.setMessage("Please wait..."); 
      d.setIndeterminate(true); 
      d.show(); 
     } 

Aufruf aus der Hauptaktivität als

new myClass(MainActivity.this); 
myClassObj.execute(s); 
+0

Sie können getApplicationContext() -Methode Verwenden Sie dazu –

+0

Konstruktor –

+1

@RahulKhurana Wo sollte ich es verwenden? – Amar

Antwort

0

es so sein sollte, in den Konstruktor übergeben.

public class myClass extends AsyncTask<Void,Void,Void>{ 
    private ProgressDialog dialog; 
    private String paramOne; 
    private int paramTwo; 

    public myClass (Activity activity, String paramOne, int paramTwo) { 
     dialog = new ProgressDialog(activity); 
     this.paramOne = paramOne; // "Hello" 
     this.paramTwo = paramTwo; // 123 
    } 

    @Override 
    protected void onPreExecute() { 
     dialog.setMessage("Please wait..."); 
     dialog.setIndeterminate(true); 
     dialog.show(); 
    } 

Rufen Sie es so.

new myClass(YourActivity.this, "Hello!", 123).execute(); 
+0

'new myClassObj (MainActivity.this) .execute();' funktioniert nicht. – Amar

+0

Versuchen Sie meine aktualisierte Antwort. –

+0

funktioniert nicht. Siehe meine aktualisierte Frage. Ich möchte auch Parameter in Async-Klasse senden. Zeigen Sie auch den empfangenden Code in der asynchronen Klasse an. – Amar

0

Ich habe einen besseren Ansatz für diese, Fortschrittsbalken in Ihrer Aktivität oder ein Fragment verwenden und sobald Sie Ihre AsyncTask beginnen die Sichtbarkeit zu sicht- und festgelegt, wenn Sie einsteigen führen auf PostExecute die Sichtbarkeit gesetzt gegangen durch die Verwendung die Schnittstelle in Aktivität. So etwas wie dieses

/** 
    * Listener for listening events happening in background task, whether cancelled or completed 
    * with error or success. 
    */ 
    public interface Listener { 
     /** 
     * Callback invoked when request is completed and response is got with 
     * code == {@value java.net.HttpURLConnection#HTTP_OK}. 
     */ 
     void onSuccess(Response response); 

     /** 
     * Callback invoked when request is cancelled or completed with response 
     * code != {@value java.net.HttpURLConnection#HTTP_OK}. 
     */ 
     void onError(Response response); 
    } 

und in Ihrer Tätigkeit

void onSuccess(Response response){ 
     //Visibility to Gone. 
    } 
0

Es werden zwei Fälle von Aufrufen AsyncTask sein, Wenn AsyncTask in derselben Aktivität aufrufen: -

public class myClass extends AsyncTask<Void,Void,Void>{ 
ProgressDialog d; 
String s; 

public myClass (String str) { 
    this.s= str; 
} 
@Override 
    protected void onPreExecute() { 
     d = new ProgressDialog(getApplicatinContext()); 
     d.setMessage("Please wait..."); 
     d.setIndeterminate(true); 
     d.show(); 
    } 

Aufruf aus dem Haupt Aktivität als

myClassObj.execute(); 

Wenn u in separaten Aktivität oder in separaten Datei aufrufen müssen, dann müssen u den Code unten folgen: -

public class myClass extends AsyncTask<Void,Void,Void>{ 
    Activity act; 
    ProgressDialog d; 


public myClass (Activity act) { 
    this.act = act; 
} 


@Override 
    protected void onPreExecute() { 
     d = new ProgressDialog(act.getApplicationContext()); 
     d.setMessage("Please wait..."); 
     d.setIndeterminate(true); 
     d.show(); 
    } 

Aufruf aus dem Hauptaktivität als

new myClass(MainActivity.this); 
myClassObj.execute(s); 
+0

Siehe meine aktualisierte Frage. Ich möchte Parameter an asynchrone Klassen senden. – Amar

+0

Ich habe den Code bearbeitet. Bitte lassen Sie mich wissen, wenn Sie Probleme damit haben .. – santhoshkumar

Verwandte Themen