Autore Topic: Lanciare un'Activity al termine di un AsyncTask  (Letto 648 volte)

Offline Antivirusvivente

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7 x64 Ultimate
Lanciare un'Activity al termine di un AsyncTask
« il: 09 Luglio 2012, 23:10:02 CEST »
0
Ciao a tutti, sono nuovo nella programmazione Java e Android, mi sto cimentando nel porting di un mio software su sistema Android. Ho però un problema, se eseguendo le operazioni in single-thread tutto funzionava, adesso sto avendo seri problemi per passare al multithreading. La prima Activity, con un button deve eseguire questo thread, che parallelamente deve effettuare delle operazioni, e al termine, visualizzarle in un'altra activity già preparata con il suo Listview, solo che questo non accade. Allego il codice della mia classe:

Codice (Java): [Seleziona]
public class DownloadHTML extends AsyncTask<String, String, String>  {
       
        private String titolo;
        private String testo;
        public GetMusicProActivity activity;
       
    public DownloadHTML(GetMusicProActivity a)
    {
        activity = a;
    }


        public String GetTesto(){
                return this.testo;
        }


        @Override
        protected String doInBackground(String... urls) {
                // TODO Auto-generated method stub
                String html = "http://*******" + this.titolo + ".html";
        String testo = "";
        html = html.replace(" ","_");
               
        try {
            // Perform action on click
            URL url = new URL(html);
            URLConnection conn = url.openConnection();
            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line = "";
            while ((line = rd.readLine()) != null) {
                testo = testo + line;
               
            }
                       
        }
        catch (Exception e) {
        }
       
        this.testo = testo;
        return null;
        }
       
        protected void onPostExecute() {
                String[] titoli = lista(this.testo, 0);
                String[] infos = lista(this.testo, 1);
                String[] download = lista(this.testo, 2);
                               
                Intent form_intent = new Intent(activity, Ricerca.class);
                form_intent.putExtra("ricerca", this.titolo);
                form_intent.putExtra("titolo", titoli);
                form_intent.putExtra("infos", infos);
                form_intent.putExtra("download", download);
               
                activity.startActivity(form_intent);
               
        }

Ed ecco la chiamata all'Async

Codice (Java): [Seleziona]
public void onClick(View v)
    {
        // TODO Auto-generated method stub
        switch ( v.getId() )
        {
                case R.id.form_button:
                        final EditText edit_titolo = (EditText)findViewById(R.id.edit_titolo);
                        new DownloadHTML(this).execute(edit_titolo.getText().toString());

        }
    }

Come posso procedere?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Lanciare un'Activity al termine di un AsyncTask
« Risposta #1 il: 10 Luglio 2012, 08:00:37 CEST »
0
Puoi specificare meglio la natura del problema?

Devi fare il "debug" della tua applicazione: metti dei Log.d() sul percorso che dovrebbe seguire l'esecuzione e verifica dove si blocca o esce dal percorso atteso. Trovato il punto, sempre con i Log.d(), cerca di capire cosa va storto.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store