dekans Posted October 23, 2009 Share Posted October 23, 2009 (edited) 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" }; Edited October 25, 2009 by dekans Quote Link to comment Share on other sites More sharing options...
Tama Chan Posted October 23, 2009 Share Posted October 23, 2009 faudrait que tu montres un peu plus de code, difficile d'aider comme ça. Deja regarde le logcat ! Quote Link to comment Share on other sites More sharing options...
dekans Posted October 23, 2009 Author Share Posted October 23, 2009 Justement, si je remplace getString() par le string "Activité 2" hardcodé ça passe. Et dans le logcat je ne vois rien... Quote Link to comment Share on other sites More sharing options...
popolbx Posted October 23, 2009 Share Posted October 23, 2009 (edited) ça serait pas plutot String[] act2 = getString(R.string.activity_2); ou un gestrings ou getstringarray si ça existe Edited October 23, 2009 by popolbx Quote Link to comment Share on other sites More sharing options...
dekans Posted October 23, 2009 Author Share Posted October 23, 2009 getString() renvoie un string tout simple, que je veux mettre dans un string[]. Vous avec quelle JDK d'installée ? Quote Link to comment Share on other sites More sharing options...
Tama Chan Posted October 23, 2009 Share Posted October 23, 2009 t'as verifié que ton string est valable ? Essaye de le sortir dans le logcat, il est peut etre null Quote Link to comment Share on other sites More sharing options...
dekans Posted October 23, 2009 Author Share Posted October 23, 2009 je l'affiche dans une autre activity et il est bon Quote Link to comment Share on other sites More sharing options...
popolbx Posted October 23, 2009 Share Posted October 23, 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[]; Quote Link to comment Share on other sites More sharing options...
dekans Posted October 23, 2009 Author Share Posted October 23, 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. Quote Link to comment Share on other sites More sharing options...
dekans Posted October 23, 2009 Author Share Posted October 23, 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 Quote Link to comment Share on other sites More sharing options...
dekans Posted October 24, 2009 Author Share Posted October 24, 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)); } } }; } Quote Link to comment Share on other sites More sharing options...
Cyril Mottier Posted October 25, 2009 Share Posted October 25, 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) Quote Link to comment Share on other sites More sharing options...
dekans Posted October 25, 2009 Author Share Posted October 25, 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 :( Quote Link to comment Share on other sites More sharing options...
Cyril Mottier Posted October 25, 2009 Share Posted October 25, 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 ;) Quote Link to comment Share on other sites More sharing options...
dekans Posted October 25, 2009 Author Share Posted October 25, 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)); } } }; } Quote Link to comment Share on other sites More sharing options...
Cyril Mottier Posted October 25, 2009 Share Posted October 25, 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); } } Quote Link to comment Share on other sites More sharing options...
dekans Posted October 25, 2009 Author Share Posted October 25, 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 Quote Link to comment Share on other sites More sharing options...
Fluckysan Posted October 26, 2009 Share Posted October 26, 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] Quote Link to comment Share on other sites More sharing options...
Cyril Mottier Posted October 26, 2009 Share Posted October 26, 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 :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.