Java android - jak vrátit z metody pole typu string
Dobrý večer, mám zhruba tento kód:
Kód se má v nativní aplikaci na androidu připojit k PHP serveru a vrátit výstup.
Vše funguje, jak má, pokud vracím jen String (výstup). A to z metody doInBackground.
Já bych ovšem potřeboval vracet pole stringů.
Jedná se o private class UpdateTask extends AsyncTask<String, Void, List<String>> , který provede metodu doInBackground a
následně vrací String. Já jsem to celé přepsal, aby vracel pole Stringů:
Konkrétně pole Result String:
@Override
protected List<String> doInBackground(String... args) {
String response2 = "";
OutputStream os = null;
InputStream is = null;
HttpURLConnection conn = null;
List<String> result = new ArrayList<>();
try {
URL url = new URL("https://nejakawebka.php");
conn = (HttpURLConnection) url.openConnection();
try {
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String response = String.valueOf(conn.getResponseCode());
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("login", args[0]));
params.add(new BasicNameValuePair("password", args[1]));
//params.add(new BasicNameValuePair("thirdParam", paramValue3));
os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
result.add(response);
vstup.add(response);
String line;
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line=br.readLine()) != null) {
response2 += line;
}
result.add(response2);
vstup.add(response2);
}catch (Exception ex){
Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
finally {
conn.disconnect();
return result;
}
}
catch (Exception ex) {
}
return result;
}
Pak mám:
@Override
protected void onPostExecute(List<String> finalResult) {
super.onPostExecute(finalResult);
if(!finalResult.isEmpty()) {
if (!isCancelled()) {
if (listener != null) {
totalResult.add("ONE");
totalResult.add("TWO"); */
Toast.makeText(getApplicationContext(), "pocet pole " + String.valueOf(totalResult.get(0)), Toast.LENGTH_LONG).show();
listener.onMyAsynTaskCompleted(1, totalResult);
}
}
}
}
Metoda onPostExecute se normálně zavolá.
Jenomže předané pole do ní je úplně prázdné.
Nechápu proč.
Zkoušel jsem i naplnit v této metodě onPostExecute jiné pole, totalResult a to se vrací úplně v pohodě.
Tak kde je prosím problém ??? Nechápu.