Eu sou novo em android / java, mas tenho conhecimentos avançados em c # e .net.
Eu tenho um problema com a AsyncTask.
Meu Código:
import android.os.AsyncTask;
public class testtask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = ""; // BREAKPOINT HERE
return "";
}
@Override
protected void onPostExecute(String result) {
}
}
E a chamada:
public void RequestDepartments(View view) {
BamakiWebService service = new BamakiWebService();
RequestType request = new RequestType();
request.Uri = "departments/all";
try {
testtask task = new testtask();
task.execute("wfwef");
}
catch (Exception ex) {
Log.e("Main", ex.getMessage());
}
}
O código falha porque não consigo acessar os urls ?! Quando eu depuro o doInBackground e adiciono os urls para assisti-lo, ele diz "Não é possível encontrar a variável local" urls "" ?! (no BreakPoint -> // BREAKPOINT AQUI)
O que estou fazendo errado ?!
EDITAR
Alterando o Execute para
testtask task = new testtask();
String[] params = new String[] {"wfwef"};
task.execute(params);
Não resolveu o problema ...
Respostas:
0 para resposta № 1Você não precisa passar uma string-array! Se você está passando apenas uma string, você pode acessar essa string em doInBackground
com urls [0]! Espero que ajude
yourAsyncTask.execute(Your URL String);
E em doInBackground
acesse os urls da mesma forma que faria com uma matriz. urls [0]
-1 para resposta № 2
Dê execute () uma string-array como um parâmetro, não uma string. Em doInBackground (String ... urls) você pode recuperá-lo com urls [0], urls [1] etc.