2012-01-31 5 views
0

J'utilise le groupe pour afficher l'activité dans un onglet. A et B Activty sont le même groupe. Un appel B, comme ci-dessous le code:Afficher la boîte de dialogue pendant le chargement

Intent intent = new Intent(AActivity.this, BActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
Window w = MyGroup.group.getLocalActivityManager().startActivity("BActivity", intent); 
View view = w.getDecorView(); 
MyGroup.group.setContentView(view); 

Et BActivity est un ListActivity.

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
this.setContentView(R.layout.list); 
RL url = new URL(urlstr); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setConnectTimeout(10000); 
connection.setDoInput(true); 
connection.setDoOutput(true); 
connection.setUseCaches(false); 
InputStream is = connection.getInputStream(); 
//extract information from is, and show in list view 
} 

Je souhaite afficher une boîte de dialogue pour afficher le chargement. J'essaie déjà la méthode AsyncTask et Thread Runnable. Mais l'erreur Unable to add window -- token [email protected] is not valid; is your activity running? s'affiche. Comment le résoudre?

Répondre

1

vous pouvez utiliser ProgressDialog Class avec la classe Help of Handler. De cette façon, vous pouvez réaliser ce que vous voulez faire.

progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true); 

new Thread (new Runnable() 
{ 
    public void run() 
    { 
     // your loading code goes here 
    } 
}).start(); 


    Handler progressHandler = new Handler() 
    { 

     public void handleMessage(Message msg1) 
     { 

      progDailog.dismiss(); 
      } 
    } 
+0

Il a la même erreur. – brian

+0

See J'ai ajouté le code – Lucifer

2

Je suppose que vous êtes dans un TabHost. Donc, lorsque vous ajoutez votre ProgressDialog ne pas utiliser les activités Contexte this pour l'ajouter, utilisez plutôt getParent() pour obtenir le contexte de la TabHost:
ProgressDialog pDia = new ProgressDialog(getParent());

+0

Mais je n'ai toujours pas eu de réponse. – brian

+0

Utilisez AsynTask pour exécuter votre code de téléchargement. Et dans onPreExecute vous devez ajouter le ProgressDialog avec mon code ci-dessus. – Thommy

Questions connexes