Autore Topic: ProgressDialog e Tabwidget  (Letto 588 volte)

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
ProgressDialog e Tabwidget
« il: 18 Maggio 2012, 20:53:27 CEST »
0
Salve! Ho la necessità di mostrare un ProgressDialog quando clicco sul terzo tab di un tabwidget. In sostanza, per adesso, senza ProgressDialog, quando clicco sul terzo tab del tabwidget l'applicazione si blocca, perchè sta lavorando in modo da mostrarmi dopo un po' di secondi il risultato sul tab 3. Il tab 3 effettua una chiamata ad un database Mysql e preleva dei dati. Io vorrei informare l'utente, che l'applicazione non si è bloccata per uno strano motivo o sta per crashare, ma perche sta lavorando(Sta prelevando i dati dal database). Ho pensato subito al ProgressDialog, ma non ho capito nulla. Inoltre come faccio a far capire che ho cliccato il terzo tab e si deve attivare il ProgressDialog. Ho sentito parlare di Thread per usare un ProgressDialog.
Questo è il codice Java dei 3 Tab

Codice (Java): [Seleziona]
package prova.tab;

import android.app.TabActivity;
import android.net.Uri;
import android.os.Bundle;
import android.content.Intent;
import android.content.res.Resources;
import android.widget.TabHost;

public class ProvaActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        // Variabili per Disegni su tabhost
        Resources res = getResources();
        TabHost.TabSpec spec;
        TabHost mTabHost = getTabHost();
       
        //camera
        Intent cam = new Intent().setClass(this, Tab1.class);
        spec = mTabHost.newTabSpec("tab_test1").setIndicator("Camera",res.getDrawable(R.drawable.ic_tab_camera)).setContent(cam);
        mTabHost.addTab(spec);
        Uri uri = Uri.parse("http://www.google.it");
       
       
        //Connection
        Intent connect = new Intent(Intent.ACTION_VIEW, uri).setClass(this, Tab2.class);
        spec = mTabHost.newTabSpec("tab_test2").setIndicator("Connection",res.getDrawable(R.drawable.ic_tab_connection)).setContent(connect);
        mTabHost.addTab(spec);
       
        //History
        Intent hist = new Intent().setClass(this, Tab3.class);

        spec = mTabHost.newTabSpec("tab_test3").setIndicator("History",res.getDrawable(R.drawable.ic_tab_server)).setContent(hist);
        mTabHost.addTab(spec);
       
        //default
        mTabHost.setCurrentTab(1); //setta il tab di default all'avvio dell'applicazione
    }
}

E questo e quello che fa il Tab 3 ovvero preleva i dati da un DB Mysql

Codice (Java): [Seleziona]
package prova.tab;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Vector;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.app.ProgressDialog;


public class Tab3 extends Activity {
       
         
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabw3);
 
        ProgressDialog pd;
        ListView listView = (ListView) findViewById(R.id.mylist);
       
        Vector v = new Vector();
       
        String readTwitterFeed = readTwitterFeed();
        try {
           JSONArray jsonArray = new JSONArray(readTwitterFeed);
           
           for (int i = 0; i < jsonArray.length(); i++)
           {
              JSONObject jsonObject = jsonArray.getJSONObject(i);
              v.add(jsonArray.getJSONObject(i).getString("nome") +" "+ jsonArray.getJSONObject(i).getString("cognome"));
           }
        } catch (Exception e) {
           Toast.makeText(this, "Exception" + e,Toast.LENGTH_LONG).show();
           e.printStackTrace();
        }
        ListAdapter listaContatti = new ArrayAdapter(this, android.R.layout.simple_list_item_1, v);
        listView.setAdapter(listaContatti);
    }

     public String readTwitterFeed() {
        StringBuilder builder = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet("http://10.0.2.2/prova.php");
       
        try {
           HttpResponse response = client.execute(httpGet);
           StatusLine statusLine = response.getStatusLine();
           int statusCode = statusLine.getStatusCode();
           if (statusCode == 200) {
             
              HttpEntity entity = response.getEntity();
              InputStream content = entity.getContent();
              BufferedReader reader = new BufferedReader(new InputStreamReader(content));
              String line;
              while ((line = reader.readLine()) != null)
              {
                 builder.append(line);
              } //end while
           } else {
              Toast.makeText(this, "Failed to download file",Toast.LENGTH_LONG).show();
           }
        } catch (ClientProtocolException e) {
           e.printStackTrace();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return builder.toString();
        }
     
     
     public boolean onCreateOptionsMenu(Menu menu) {
         menu.add("Aggiorna");
         return true;
         }
     
     
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
         case 0:
             Toast.makeText(this, "Aggiornamento",Toast.LENGTH_LONG).show();
             ListView listView = (ListView) findViewById(R.id.mylist);
             
             Vector v = new Vector();
             
             String readTwitterFeed = readTwitterFeed();
             try {
                JSONArray jsonArray = new JSONArray(readTwitterFeed);
               
                for (int i = 0; i < jsonArray.length(); i++)
                {
                   JSONObject jsonObject = jsonArray.getJSONObject(i);
                   v.add(jsonArray.getJSONObject(i).getString("nome") +" "+ jsonArray.getJSONObject(i).getString("cognome"));
                }
             } catch (Exception e) {
                Toast.makeText(this, "Exception" + e,Toast.LENGTH_LONG).show();
                e.printStackTrace();
             }
             ListAdapter listaContatti = new ArrayAdapter(this, android.R.layout.simple_list_item_1, v);
             listView.setAdapter(listaContatti);
           return true;
         default:
             return super.onOptionsItemSelected(item);
             }
         }

       
}

Grazie