2013-07-09 16 views
16

Vorrei passare una singola stringa in un asynctask. Qualcuno potrebbe mostrarmi come è fatto? il mio getEntity bisogno Il metodo getEntity (Attività, String, EntityGetListener), ma io continuo a passare questo String []Asynctask Android che passa una singola stringa

String pass= story.get(position).getEntity(); 

     new RemoteDataTask().execute(pass); 





private class RemoteDataTask extends AsyncTask<String, String, Long> { 

    @Override 
    protected Long doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     EntityUtils.getEntity(activity, params, new EntityGetListener() { 
      @Override 
      public void onGet(Entity entity) { 

       viewcount = entity.getEntityStats().getViews(); 
      } 

      @Override 
      public void onError(SocializeException error) { 

      } 
     }); 
     return null; 
    } 

} 
+3

passare 'params [0]' invece di '' params' al metodo getEntity' Per ulteriori informazioni, vedere [varargs] (http://docs.oracle.com/javase/1.5.0/docs/guide /language/varargs.html) –

risposta

48

È già questo

 new RemoteDataTask().execute(pass); // assuming pass is a string 

In doInbackground

 @Override 
    protected Long doInBackground(String... params) { 

      String s = params[0]; // here's youre string 
      ...  //rest of the code. 
    } 

Puoi scopri maggiori informazioni @

http://developer.android.com/reference/android/os/AsyncTask.html

+0

Quando si passa 'Valore stringa' nella classe' AsyncTask', Si dice che la variabile è accessibile da una classe interna. Devi essere dichiarato come finale. Ma ho bisogno di cambiare i valori delle variabili di volta in volta. Come posso risolvere questo problema –

+0

@EJChathuranga se si accede a una variabile che non è una variabile di classe ed è accessibile in classe interna anonima deve essere definitiva. Leggi https://stackoverflow.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class. È possibile rendere la variabile un membro della classe inizializzare prima dell'uso per superare questo problema – Raghunandan

5

È possibile creare AsyncTask con un costruttore.

public class RemoteDataTask extends AsyncTask<String, String, Long> { 

    private String data; 

    public RemoteDataTask(String passedData) { 
     data = passedData; 
    } 

    @Override 
    protected String doInBackground(Context... params) { 
     // you can access "data" variable here. 
     EntityUtils.getEntity(activity, params, new EntityGetListener() { 
      @Override 
      public void onGet(Entity entity) { 
       viewcount = entity.getEntityStats().getViews(); 
      } 
      @Override 
      public void onError(SocializeException error) { 
      } 
     }); 
     return null; 
    } 
} 

Nell'applicazione (Activity, Service ecc), è possibile utilizzare;

private RemoteDataTask mTask; 
private void doStuff(){ 
    String pass = "meow"; // story.get(position).getEntity(); 
    mTask = new RemoteDataTask(pass); 
    mTask.execute(); 
} 
Problemi correlati