2013-07-09 2 views
16

단일 문자열을 asynctask에 전달하고 싶습니다. 아무도 그것이 어떻게 완료되었는지를 보여줄 수 있습니까? 내 getEntity는 방법 getEntity (활동, 문자열, EntityGetListener)가 필요하지만,이 String []를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]'대신 자세한 내용 getEntity' 방법에 params'''의 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 클래스에 전달할 때 변수가 내부 클래스에서 액세스한다고합니다. 최종으로 선언해야합니다. 그러나 나는 때때로 변수 값을 변경해야한다. 이 문제를 어떻게 해결할 수 있습니까? –

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

(Activity, Service 등), 당신은 사용할 수 있습니다;

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