2011-11-03 19 views
5

Il problema è che sto venendo da un'altra attività, e quando provo ad andare alla nuova attività, si trova sulla vecchia finché non viene visualizzata la nuova, quindi sto provando a farla andare alla nuova attività subito, e quindi visualizzare una schermata di caricamento mentre ottiene il contenuto. (Il contenuto proviene da un sito Web o da un database interno).Come si può generare una schermata di caricamento in Android?

Ho provato il progressDialog dal sito di sviluppo Android ma non fa nulla, poiché l'attività termina il caricamento prima di mostrare qualcosa, quindi quando arriva il momento non c'è niente da caricare.

risposta

14

Prima avviare prima la nuova attività, quindi chiamare il file di attività asincrona. Inizierà una nuova attività quando si chiude la vecchia. in OnCreate della nuova attività chiamare la classe asyn compito come qui di seguito

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
      setContentView(your layout here); 
      new GetTask(this).execute(); 

    } 
} 

class GetTask extends AsyncTask<Object, Void, String> { 
    Context context; 

    GetTask(Context context, String userid) { 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     mDialog = new ProgressDialog(mContext); 
     mDialog.setMessage("Please wait..."); 
     mDialog.show(); 
    } 

    @Override 
    protected String doInBackground(Object... params) { 
     // here you can get the details from db or web and fetch it.. 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     mDialog.dismiss(); 
    } 
} 
+0

Perché non lo si fa come thread? –

+0

Questo AsyncTask ha funzionato a meraviglia, ho appena applicato alcuni contenuti generici sul primo elemento dell'elenco mentre è stato caricato e poi lo ho recuperato dal contenuto generato effettivo nel postExecute – Shant82

+0

@deepa nyc work ... prendi il mio upvote ... :) – Steve

0

Come suggerimento, provare a ridurre il codice nel metodo onCreate della seconda attività. Lascia che sia semplice come chiamare super e impostare le visualizzazioni del contenuto. Questo farà apparire l'interfaccia utente come progettata in XML.

Spostare il resto del codice nel metodo onResume. Il passaggio successivo, se si dispone di alcuni dati da recuperare dal DB o al di fuori, provare a utilizzare il thread (how to do it) o async task.

+0

Beh io uso un paio di startActivityForResults, sarà che causa che per ricaricare su ogni volta che ritorna? – Shant82

+0

no, se si utilizza startActivtyForResult, è necessario implementare onActivtyResult (..) e il contesto ritorna da qui. Non ricaricherà l'attività – Vinay

Problemi correlati