Autore Topic: Problema AsyncHttpClient usato due volte  (Letto 235 volte)

Offline Darèios89

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
Problema AsyncHttpClient usato due volte
« il: 28 Luglio 2016, 12:22:45 CEST »
0
Ciao a tutti, ho risolto alcuni problemi di qualche giorno fa relativi a questa libreria, riesco correttamente ad utilizzarla per prelevare dei dati, ma adesso sono in una situazione in cui so che un metodo che utilizza questa libreria fa tutto correttamente, perchè se lo chiamo all'avvio della prima activity vedo risultati, in altri contesti no.

La situazione è questa, ho un contextmenu e faccio l'override del metodo relativo al click su item, ho un costrutto switch con due case e in entrambi uso la classe Model per fare la chiamata a due metodi. Posto solo quello che dà problemi del Model.

Model:

Codice: [Seleziona]
    public void getListaEventi(){

        AsyncHttpClient client = new AsyncHttpClient();
        RequestParams params = new RequestParams();
        params.put("action", "listaeventi");

        client.post("URL", params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) {

                String tmp = new String(responseBody, StandardCharsets.UTF_8);
                System.out.println("Valore"+tmp);
                Costanti.listaeventi=tmp;    //memorizzo in una variabile di un'altra classe il risultato

            }
            @Override
            public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {

                System.out.println();error.printStackTrace();
            }

        });

        client.cancelAllRequests(false);

    }


E poi qui dichiaro un oggetto Model e invoco quel metodo in entrambi i case dello switch, sono due metodi diversi e nel "case 0" nessun problema:

Codice: [Seleziona]
    @Override
    public boolean onContextItemSelected(MenuItem item) {

        switch (item.getGroupId()) {

            case 0:

                int idregione = item.getItemId();
                m.getCitta(idregione);
                TextView regione = (TextView) getActivity().findViewById(R.id.regionescelta);
                regione.setText(item.getTitle());

                break;

            case 1:
               
   
                m.getListaEventi();

                str = new StringTokenizer(Costanti.listaeventi, "&");   //risultato vuoto


                while (str.hasMoreElements()) {

                    String event = str.nextToken();
                    event.replace("\"", "");

                    StringTokenizer tosplit = new StringTokenizer(event, ",");

                    while (tosplit.hasMoreElements()) {


                        TextView e = new TextView(getActivity().getApplicationContext());
                        e.setText(tosplit.nextToken());
                        e.setLayoutParams(params);
                        e.setPadding(5, 0, 0, 0);
                        e.setGravity(Gravity.CENTER);
                        e.setTextColor(ContextCompat.getColor(getActivity().getApplicationContext(), R.color.colorPrimary));
                        evento.addView(e);
                    }

                    tl.addView(evento);
                }


                View v = getActivity().findViewById(R.id.tabella);
                v.setVisibility(View.VISIBLE);


                break;
        }

        return true;
    }

nel case 1 ottengo risultato vuoto, da cosa può dipendere? Il metodo è testato e funziona se inserito nell'activty di lancio dell'app.