2013-07-09 45 views
16

我想將單個字符串傳遞給一個asynctask。任何人都可以告訴我它是如何完成的?我getEntity需要的方法getEntity(活動,字符串,EntityGetListener),但我一直通過這個字符串[]Android Asynctask傳遞單個字符串

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

通'PARAMS [0]'代替'params'到'getEntity'方法的更多信息請參見[可變參數](http://docs.oracle.com/javase/1.5.0/docs/guide /language/varargs.html) –

回答

48

您已經有此

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

doInbackground

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

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

你可以查找更多信息@

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

+0

將'String value'傳遞給'AsyncTask'類時,它表示該變量是從內部類中訪問的。需要聲明爲final。但我需要隨時更改變量值。我如何解決這個問題 –

+0

@EJChathuranga如果你正在訪問的變量不是一個類變量,並且它在匿名內部類中訪問,它必須是最終的。閱讀https://stackoverflow.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class。在使用之前,您可以使變量成爲類初始化的成員以克服此問題 – Raghunandan

5

您可以使用構造函數構建AsyncTask

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

在應用程序(ActivityService等),就可以使用;

private RemoteDataTask mTask; 
private void doStuff(){ 
    String pass = "meow"; // story.get(position).getEntity(); 
    mTask = new RemoteDataTask(pass); 
    mTask.execute(); 
} 
相關問題