2010-12-07 6 views
-1

J'ai créé un projet tabhost et dans un de mes onglets j'ai un listview et je veux afficher l'activité suivante dans le même onglet en cliquant sur un listitem? S'il vous plaît aiderTabhost Problème?

Répondre

0

je fais que de cette manière:

sur l'activité de la liste, lorsque l'utilisateur choisir un élément de la liste i envoie une intention de diffusion à l'activité de l'onglet avec l'identifiant de haricot (info id)

Intent broadcastIntent = new Intent(MyTabActivity.SWITCH_TAB_MAP); 
Bundle bundle = new Bundle(); 
bundle.putInt("idBean", bean.getId()); 
broadcastIntent.putExtras(bundle); 
sendBroadcast(broadcastIntent); 

lorsque l'activité de l'onglet reçoit le message, envoyer à un gestionnaire, parce que la méthode OnReceive a couru sur un autre thread

@Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     Message msg = handler.obtainMessage(); 
     msg.what = VIEW_ITEM_ON_MAP; 
     msg.obj = bundle; 
     handler.dispatchMessage(msg); 
    } 

finalement le gestionnaire changer l'onglet en cours d'un appel une méthode dans l'autre activité-

private final Handler handler = new Handler(){ 
    public void handleMessage(android.os.Message msg) { 
     switch (msg.what) { 
      case VIEW_ITEM_ON_MAP:{ 
       Bundle bundle = (Bundle) msg.obj; 
       int idBean = bundle.getInt("idBean"); 
       ((MyMapActivity)getLocalActivityManager().getActivity(MAPA)).viewItemFromList(idBean); 
       getTabHost().setCurrentTabByTag(MAPA); 
       break; 
      } 
    }; 
};}; 

ps: parce TabActivity est un ActivityGroup j'utilise ((MyMapActivity) getLocalActivityManager() getActivity (MAPA).) pour obtenir l'activité avec l'id "MAPA"

espérons que cela vous aide