dekans Posté(e) 23 octobre 2009 Share Posté(e) 23 octobre 2009 (modifié) Je n'arrive pas à intégrer des strings du strings.xml dans un listView. Si le texte est hardcodé, ça passe nickel. Mais si je fais un getString(R.string.nomdustring) ça crash :( String act2 = getString(R.string.activity_2); final String[] ListeActivites = new String[] { act2,"Activité 3" }; Modifié 25 octobre 2009 par dekans Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 23 octobre 2009 Share Posté(e) 23 octobre 2009 faudrait que tu montres un peu plus de code, difficile d'aider comme ça. Deja regarde le logcat ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 23 octobre 2009 Auteur Share Posté(e) 23 octobre 2009 Justement, si je remplace getString() par le string "Activité 2" hardcodé ça passe. Et dans le logcat je ne vois rien... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 23 octobre 2009 Share Posté(e) 23 octobre 2009 (modifié) ça serait pas plutot String[] act2 = getString(R.string.activity_2); ou un gestrings ou getstringarray si ça existe Modifié 23 octobre 2009 par popolbx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 23 octobre 2009 Auteur Share Posté(e) 23 octobre 2009 getString() renvoie un string tout simple, que je veux mettre dans un string[]. Vous avec quelle JDK d'installée ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 23 octobre 2009 Share Posté(e) 23 octobre 2009 t'as verifié que ton string est valable ? Essaye de le sortir dans le logcat, il est peut etre null Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 23 octobre 2009 Auteur Share Posté(e) 23 octobre 2009 je l'affiche dans une autre activity et il est bon Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 23 octobre 2009 Share Posté(e) 23 octobre 2009 t as essayé avec new String[] { new String(act2),"xxx"}; ou pire un ArrayList toto = new ArrayList(); toto.add(act2); toto.add("xxx"); String[] s = toto.toArray[]; Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 23 octobre 2009 Auteur Share Posté(e) 23 octobre 2009 J'ai essayé les 2 sans succès oui :( Mais j'ai trouvé la source du problème : c'est le projet qui est foireux. Je ne sais pas pourquoi. Quand je refais ça dans un autre projet, ça passe très bien. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 23 octobre 2009 Auteur Share Posté(e) 23 octobre 2009 en fait c'est mon setListAdapter() qui doit être mauvais, c'est lui qui cause mes problème avec les strings. J'ai pris celui du helloListView dans le SDK, mais je vais chercher avec un autre Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 24 octobre 2009 Auteur Share Posté(e) 24 octobre 2009 Voila le code, j'avais regrpis ça du helloListViex mais il va falloir que je regarde le fonctionnement des listAdapter, car c'est ça qui fout le bordel je crois public class mainActivity extends ListActivity { /** Called when the activity is first created. */ public static final int NewActivity_ID = Menu.FIRST; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter(mainActivity.this, android.R.layout.simple_list_item_1, ListeActivites)); getListView().setTextFilterEnabled(true); getListView().setOnItemClickListener(listener); } //this.getResources().getString(R.string.activity_2) ,this.getResources().getString(R.string.activity_3) public String[] ListeActivites = new String[]{ getString(R.string.activity_2),"Activité 3" }; AdapterView.OnItemClickListener listener = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { switch (position){ case 0 : startActivity(new Intent(mainActivity.this, SecondActivity.class));break; case 1 : startActivity(new Intent(mainActivity.this, ThirdActivity.class)); } } }; } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 25 octobre 2009 Share Posté(e) 25 octobre 2009 Déjà je ne comprend pas comment getString(R.string.activity_2) peut passer à la compilation ... la méthode getString fait partie de la classe Resources or là tu l'appelle sur this (Activity). Pense aussi à respecter la syntaxe généralement utilisée en Java ;) (pas mainActivity mais MainActivity et non pas ListeActivites mais listeActivites) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 25 octobre 2009 Auteur Share Posté(e) 25 octobre 2009 le getString(..) tout seul est employé dans pas mal d'exmemple de code de la doc du SDK. Pour la syntaxe Java, j'ai refait le projet 2-3 fois donc au final je m'emmèle un peu :p Et comme c'est juste une appli d'essai je ne fais pas attention. Avec getBaseContext().getResources().getString(R.string.activity_2) ca ne fonctionne pas mieux :( Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 25 octobre 2009 Share Posté(e) 25 octobre 2009 getResources().getString(R.string.activity_2) suffit car this est un Context ;) Tu peux reposter la toute dernière version de ton code STP ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 25 octobre 2009 Auteur Share Posté(e) 25 octobre 2009 bah ça fait exactement la même chose :( public class mainActivity extends ListActivity { /** Called when the activity is first created. */ public static final int NewActivity_ID = Menu.FIRST; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter(mainActivity.this, android.R.layout.simple_list_item_1, ListeActivites)); getListView().setTextFilterEnabled(true); getListView().setOnItemClickListener(listener); } public String[] ListeActivites = new String[]{ getResources().getString(R.string.activity_2),"Lancer Activité trois" }; AdapterView.OnItemClickListener listener = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { switch (position){ case 0 : startActivity(new Intent(mainActivity.this, SecondActivity.class));break; case 1 : startActivity(new Intent(mainActivity.this, ThirdActivity.class)); } } }; } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 25 octobre 2009 Share Posté(e) 25 octobre 2009 J'ai compris le problème en fait ... c'est tout bête : c'est que ta liste ListeActivites ne peut pas avoir de "getResources()" vu que tu la définie au niveau classe (c'est à dire quand le this est nul) ! Si tu mets la déclaration de ta ListeActivites dans le onCreate ce sera bon. Voilà le code avec la bonne syntaxe (et le bon nommage) : package com.cyrilmottier.android.testforum; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; public class MainActivity extends ListActivity { private final AdapterView.OnItemClickListener mListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(MainActivity.this, SecondActivity.class)); break; case 1: startActivity(new Intent(MainActivity.this, ThirdActivity.class)); break; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] listeActivites = new String[] { getResources().getString(R.string.activity_2), "Lancer Activité trois" }; setListAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, listeActivites)); getListView().setTextFilterEnabled(true); getListView().setOnItemClickListener(mListener); } } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 25 octobre 2009 Auteur Share Posté(e) 25 octobre 2009 Ah oui merci beaucoup ! J'ai un peu de mal à démarrer ;) Mais tu m'aides beaucoup là Je me suis abonné à ton blog en passant :p Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 26 octobre 2009 Share Posté(e) 26 octobre 2009 [HS]Ha mais je me disais bien que j'avais déjà vus ton nom quelque part ! C'est un des permiers blog / tutos que j'ai lu / fait quand j'ai commencé l'aventure Android :D Bon blog en passant, merchi à toi ;)[/HS] Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 26 octobre 2009 Share Posté(e) 26 octobre 2009 [HS]Ha mais je me disais bien que j'avais déjà vus ton nom quelque part !C'est un des permiers blog / tutos que j'ai lu / fait quand j'ai commencé l'aventure Android :D Bon blog en passant, merchi à toi ;)[/HS] Merci ... ça fait plaisir de voir que j'initie des développeurs à Android :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.