2013-07-09 10 views
16

Chciałbym przekazać pojedynczy ciąg do asynktaksu. Czy ktoś może mi pokazać, jak to się robi? moja getEntity potrzebuje metoda getEntity (aktywność, String, EntityGetListener), ale zachować przechodząc ten String []Asynctask Androida przekazujący pojedynczy ciąg

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

przepustowe 'params [0]' zamiast 'params' do' metodą getEntity' więcej informacji patrz [varargs] (http://docs.oracle.com/javase/1.5.0/docs/guide /language/varargs.html) –

Odpowiedz

48

Masz już ten

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

W doInbackground

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

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

Można znajdź więcej informacji @

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

+0

Podczas przekazywania 'String value' do klasy' AsyncTask', mówi, że zmienna jest dostępna z poziomu wewnętrznej klasy. Należy zadeklarować jako ostateczną. Ale potrzebuję zmieniać wartości zmiennych od czasu do czasu. Jak mogę rozwiązać ten problem –

+0

@EJChathuranga, jeśli uzyskujesz dostęp do zmiennej, która nie jest zmienną klasy i jest ona dostępna w annonimowej klasie wewnętrznej, musi być ostateczna. Przeczytaj https://stackoverflow.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class. Przed użyciem można ustawić zmienną jako członka klasy, aby to zmienić – Raghunandan

5

Możesz zbudować AsyncTask z konstruktorem.

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

W aplikacji (Activity, Service itp), można użyć;

private RemoteDataTask mTask; 
private void doStuff(){ 
    String pass = "meow"; // story.get(position).getEntity(); 
    mTask = new RemoteDataTask(pass); 
    mTask.execute(); 
} 
Powiązane problemy