Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java android - jak vrátit z metody pole typu string

Dobrý večer, mám zhruba tento kód:

[95069-kod-png]

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.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny