2016-08-04 19 views
-3

I protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); } in MainActivity Klasse verwendet haben ihre data als Ergebnis eines Prozesses, durch den Benutzer zu verwenden, und ich habe eine andere Klasse eingeführt ProgressDialog pd; ---- >>>>Wie verwende ich Parameter in einer geschützten Funktion in eine andere geschützte Funktion?

public class Loading 
     extends AsyncTask<Void, Void, Void> 
{ 
    public Loading() {} 

    protected Void doInBackground(Void... paramVarArgs) 
    { 

für zeigt /// //// Einige private Funktionen benötigen hier einen Datenwert von onActivityResult ///////// /////////////// Wie benutzt man diesen Datenwert hier /// /////////// Rückgabewert null; }

protected void onPostExecute(Void paramVoid) 
    { 
     super.onPostExecute(paramVoid); 
     MainActivity.this.pd.dismiss(); 

    } 

    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
     MainActivity.this.pd.setTitle("Loading App...."); 
     MainActivity.this.pd.setMessage("Please Wait....."); 
     MainActivity.this.pd.show(); 
    } 
} 

Jetzt möchte ich, dass data verwenden, die die Parameter in protected void onActivityResult(int requestCode, int resultCode, Intent data) in protected Void doInBackground(Void... paramVarArgs){} ist, wie kann ich das tun? Vielen Dank.

+0

Warum müssen Sie das tun? Warum entfernen Sie diese AsyncTask nicht, zeigen ProgressDialog in startActivityForResult() und schließen sie, wenn onActivityResult() vorhanden ist? – anhtuannd

+0

, weil ich einige private Funktionen aufrufen möchte, die diese Daten benötigen und diese Funktionen in doInbackground() geschrieben werden müssen, benötigen diese Funktionen den Datenwert, der in onActivityResult-Parameter – user3351571

+0

ist und diese Funktionen brauchen, um ProgressDialog pd anzuzeigen; für den Benutzer, bis die Aufgaben dieser Funktionen beendet sind – user3351571

Antwort

0

ich es bekam woow

AsyncTask Myasytsk = new AsyncTask() { 
@Override 
protected Object doInBackground(Object[] params) { 
    MainActivity.this.systemWritedo(pathfile); 

    return null; 
} 
     protected void onPostExecute(Object result) { 

      MainActivity.this.pd.dismiss(); 
      MainActivity.this.reboot(); 

     } 

     protected void onPreExecute() { 

      MainActivity.this.pd.setTitle("Installation...."); 
      MainActivity.this.pd.setMessage("Please Wait....."); 
      MainActivity.this.pd.show(); 

     } 
}; 
Myasytsk.execute(); 
0

Ihre AsyncTask Klasse so sein sollte.

public class Loading extends AsyncTask<Void, Void, Void> 
{ 
     private MainActivity act = null; 

     //this is constructor 
     public Loading(MainActicity _act) { 
      this.act = _act; 
     } 
     protected Void doInBackground(Void... paramVarArgs) 
     { 
      //your codes 
     } 
     protected Void onPostExecute(Object result) { 
      //your codes 
      act.pd.dismiss(); 
      act.reboot(); 
     } 
} 

Sie könnenAsyncTask Klasse in MainActivity verwenden.

private Loading loadingTask; 
public ProgressDialog pd; //your progress dialog must be public 
private void DoSomething(){ 

         //"this" send reference of MainActivity to Loading class 
    loadingTask = new LoadingTask(this); 
    loadingTask.execute(); 

}