Envoyer extras dans un TabHost
Bonjour, je suis confronté à une simple, mais non moins sournoise erreur...
Dans un TabHost, lorsque je crée mes onglets, je voudrais appeler toujours la même activité mais en envoyant des extras.
Dans l'activité appellée, je devrai récupéré l'extra, et en fonction de sa valeur, l'activité se comporterai différemment.
Donc, mon erreur est que je n'arrive pas à récupérer les extras... J'ai besoin d'envoyer un objet complexe, comme cela ne marche pas, j'ai d'abord essayé d'envoyer un simple INT. Toujours rien, on dirait qu'on ne peut pas envoyer d'extras dans les intent qu'on passe en paramètres du setContent() du setIndicator() du newTabSpec().
En tout cas, voilà mon code (quelque fois que j'aurai fait une bourde):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| for(NavService unService : _listeWSDL)
{
if(unService.getVisible())
{
int resID = getResources().getIdentifier("ic_"+unService.getPicture(), "drawable", "com.eskape.naviway"); //icône de l'onglet
intent = new Intent().setClass(this,PageGenerator.class);
if(i_webService == 2) // 2 = onglet par défaut
{
reponse = _soapRequest.SendSoapRequest(unService.getURL().toLowerCase(), unService.getURL(), "ReadMultiple", _settings);
ArrayList<NavType> listNavType = ps.parser(reponse);
unService.setNavType(listNavType);
intent.putExtra("id", _listeWSDL.indexOf(unService));
reponse = null;
}
spec = tabHost.newTabSpec(unService.getSname()).setIndicator(unService.getSname(),res.getDrawable(resID)).setContent(intent);
tabHost.addTab(spec);
i_webService++;
}
else
{
//Le WSDL n'est pas disponible (on le notifie dans le LOG)
Log.e("SERVICE (invisible)", unService.getURL());
}
}
} catch (IOException e) {
Log.e("MAIN", "ERREUR IO");
e.printStackTrace();
} catch (Exception e) {
Log.e("MAIN", "ERREUR E");
e.printStackTrace();
}
//Onglet par défault
tabHost.setCurrentTab(2);
} |
Et PageGenerator:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
Intent intent = getIntent();
int _id = 0;
if(intent.getExtras() != null)
{
_id = intent.getExtras().getInt("id");
}
else
{
Log.e("EXTRA", "AUCUN EXTRAS");
}
NavService ns = MainView._listeWSDL.get(_id);
Log.e("NOM:", ""+ns.getName());
} |