2016-06-26 7 views
1

OnPostExecute wird 2 Parameter verwenden, GCMID vom doInBackground und Benutzer-ID aus der Hauptfunktion, wo AsyncTaskParameter zu OnPostExecute in AsyncTask Senden

genannt wurde ich versucht, die Parameter in der Deklaration der AsyncTask zu ändern, aber ich habe Fehler "Versuch unvereinbar Rückgabetyp zu verwenden"

String UserID = "Admin"; 
new GCM().execute(null,null,null); 

private class GCM extends AsyncTask<String, String, String> { 

     @Override 
     protected String[] doInBackground(String... params) { 
      String gcmRegID = GHelper.GCMRegister("123456"); 
      return gcmRegID; 
     } 


     @Override 
     protected void onPostExecute(String RegID) { 
      UTask ut = new UTask(); 

      // ****** I managed to send RegID 
      // ****** I can not send UserID !! How to send it? 

      ut.execute(UserID, RegID); 
     } 
    } 
+0

Warum haben Sie 3 Null-Parameter zu Ihrer AsyncTask ausführen? –

Antwort

1

Sie UserId t schicken Aber GCM-Konstruktor.

private class GCM extends AsyncTask<String, String, String>{ 
    private String userId; 
    public GCM(String UserId){ 
    this.userId=UserId; 
    } 

und als in 'OnPostExecute()' können Sie es so verwenden:

@Override 
    protected void onPostExecute(String RegID) { 
     UTask ut = new UTask(); 
     ut.execute(this.userId, RegID); 
    } 

Und es verwenden, wie so

new GCM(UserId).execute(); 
1

starten:

String UserID = "Admin"; 
new GCM().execute(null,null,null); 

Und

private class GCM extends AsyncTask<String, String, String[]> { 

    @Override 
    protected String[] doInBackground(String... params) { 
     String regId = somethingToGetRegId(); 
     String userId = somethingToGetUserId(); 
     return new String[]{regId, userId}; 
    } 


    @Override 
    protected void onPostExecute(String[] values) { 
     UTask ut = new UTask(); 

     String regId = values[0]; 
     String userId = values[1]; 
     ut.execute(UserID, RegID); 
    } 
} 
0

ändern,

@Override 
     protected String[] doInBackground(String... params) { 
      String gcmRegID = GHelper.GCMRegister("123456"); 
      return gcmRegID; 
     } 

zu

@Override 
     protected String doInBackground(String... params) { 
      String gcmRegID = GHelper.GCMRegister("123456"); 
      return gcmRegID; 
     } 

Sie sind Rückgabetyp ist String [] und Sie einen String in doInBackground zurückkehren().