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):
Et PageGenerator:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }
Partager