didi2204 Posté(e) 30 août 2011 Share Posté(e) 30 août 2011 Bonjour à tous ! Je suis en train de réaliser un menu pour la première fois mais même avec un code que j'ai pris sur le net, je me retrouve avec une erreur. Pouvez-vous me dire d'ou elle vient et me dire comment y remédier. Mon projet est le suivant: Lorsque l'on clique sur un menu, l'application va lancer une nouvelle activity (un nouvel écran) par exemple pour revenir à l'accueil de l'appli, pour quitter le programme aussi. Mon code java pour l'activity principale : package com.didi2204.android.menu2.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; public class Menu3Activity extends Activity { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_home: Intent i = new Intent(this, Home.class); startActivityForResult(i, ACTIVITY1_REQUEST); break; case R.id.menu_setup: Intent j = new Intent(this, About.class); startActivityForResult(j, ACTIVITY2_REQUEST); break; case R.id.menu_quit: Intent k = new Intent(this, Quit.class); startActivityForResult(k, ACTIVITY3_REQUEST); break; } return(super.onOptionsItemSelected(item)); } } Mes erreurs soulignés concernent ACTIVITY1_REQUEST, ACTIVITY2_REQUEST, ACTIVITY3_REQUEST Merci d'avance pour votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lord Yu Posté(e) 30 août 2011 Share Posté(e) 30 août 2011 Salut, ACTIVITY1_REQUEST, ACTIVITY2_REQUEST, ACTIVITY3_REQUEST ne sont défini nul part ? S'ils sont souligné en rouge, le message te dit surement qu'ils ne sont pas déclarés ("ACTIVITY1_REQUEST cannot be resolved to a variable"). Lien vers le commentaire Partager sur d’autres sites More sharing options...
didi2204 Posté(e) 30 août 2011 Auteur Share Posté(e) 30 août 2011 Oui c'est sa. Le truc c'est que je commence à programmer en java android et je ne sais pas comment résoudre ce problème. Ou faut-il que je les déclares ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lord Yu Posté(e) 30 août 2011 Share Posté(e) 30 août 2011 Où tu le souhaites ! A voir la syntaxe de tes variables (les majuscules :P), j'aurais tendance à penser que ce sont des constantes. T'as différentes questions à te poser donc : - Est-ce que la valeur peut changer ? (non si c'est une constante) - Est-ce qu'elles doivent être accessible de n'importe quelle classe (c'est souvent le cas pour les constantes !) Si la réponse à ces deux questions est oui, tu vas les déclarer ainsi : public static final int ACTIVITY1_REQUEST = 1; public static final int ACTIVITY2_REQUEST = 2; public static final int ACTIVITY3_REQUEST = 3; Ensuite tu met ça dans ta class Menu3Activity si tu le souhaites (avant la méthode onCreateOptionsMenu), ou encore mieux, tu fais une nouvelle classe : class Constantes { public static final int ACTIVITY1_REQUEST = 1; public static final int ACTIVITY2_REQUEST = 2; public static final int ACTIVITY3_REQUEST = 3; } Ca va te permettre de centraliser toutes tes constantes. Pour y accéder depuis n'importe où il te suffit d'écrire : Constantes.ACTIVITY1_REQUEST edit : S'il ne s'agit pas de constante tu enlèves simplement le "final", si elles ne sont utilisées que dans ta classe Menu3Activity tu les déclares directement dans celle-ci en enlevant le "static", etc. Tu modules les mots clés en fonction de tes besoins ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
didi2204 Posté(e) 31 août 2011 Auteur Share Posté(e) 31 août 2011 Tout d'abord merci à toi Lord Yu !!! Mais mon problème n'est pas encore tout à fait réglé. Pour fermer l'application sa marche super mais pour lancer les activity j'ai un beau "Fermeture soudaine de l'application ..." quand je clique sur mon menu "Parametres" Mon activity principale : package com.didi2204.android.menu2.test; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; public class Menu3Activity extends Activity { private static final int ACTIVITY1_REQUEST = 1; private static final int ACTIVITY2_REQUEST = 2; private static final int ACTIVITY3_REQUEST = 3; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_home: Intent i = new Intent(this, Home.class); startActivityForResult(i, ACTIVITY1_REQUEST); break; case R.id.menu_setup: Intent j = new Intent(this, About.class); startActivityForResult(j, ACTIVITY2_REQUEST); break; case R.id.menu_parametres: Intent k = new Intent(this, Parametres.class); startActivityForResult(k, ACTIVITY3_REQUEST); break; case R.id.menu_quit: finish(); return true; } return(super.onOptionsItemSelected(item)); } } Mon activity "Parametres" : package com.didi2204.android.menu2.test; import android.os.Bundle; import android.preference.PreferenceActivity; public class Parametres extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } } Mon xml "prefs" si sa peut aider : <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Utilisateur"> <EditTextPreference android:key="login" android:title="Nom d'utilisateur" android:summary="Entrez votre nom d'utilisateur"> </EditTextPreference> <EditTextPreference android:title="Mot de passe" android:key="password" android:summary="Entrez votre mot de passe" android:password="true"> </EditTextPreference> </PreferenceCategory> <PreferenceCategory android:title="Notifications"> <RingtonePreference android:key="sonnerie" android:title="Sonnerie de notification" android:summary="Choisissez la sonnerie pour les notifications"> </RingtonePreference> <CheckBoxPreference android:key="vibrate" android:title="Vibreur" android:summary="Vibre lors d'une notification"> </CheckBoxPreference> </PreferenceCategory> </PreferenceScreen> Encore merci de ton aide ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lord Yu Posté(e) 31 août 2011 Share Posté(e) 31 août 2011 Je n'ai pas les moyens de tester ton code tout de suite (ce soir seulement !) mais jette un oeil au logcat pour voir l'erreur qui ressort. Pour l'afficher sous eclipse : Window > Open Perspective ... > DDMS Là un onglet s'appelle "Logcat" et affichera un erreur en rouge au moment du plantage. Ca serait intéressant de la voir. Logcat est un outil indispensable lorsque tu développes pour Android. Lien vers le commentaire Partager sur d’autres sites More sharing options...
didi2204 Posté(e) 31 août 2011 Auteur Share Posté(e) 31 août 2011 Le logcat affiche ceci lorsque je sélectionne le menu "Parametres" : 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): FATAL EXCEPTION: main 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.didi2204.android.menu2.test/com.didi2204.android.menu2.test.Parametres}; have you declared this activity in your AndroidManifest.xml? 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.app.Activity.startActivityForResult(Activity.java:2851) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.didi2204.android.menu2.test.Menu3Activity.onOptionsItemSelected(Menu3Activity.java:39) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.app.Activity.onMenuItemSelected(Activity.java:2229) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:749) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:857) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:123) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.view.View$PerformClick.run(View.java:9130) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.os.Handler.handleCallback(Handler.java:587) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.os.Handler.dispatchMessage(Handler.java:92) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.os.Looper.loop(Looper.java:130) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at android.app.ActivityThread.main(ActivityThread.java:3694) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at java.lang.reflect.Method.invokeNative(Native Method) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at java.lang.reflect.Method.invoke(Method.java:507) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 08-31 14:53:11.124: ERROR/AndroidRuntime(4321): at dalvik.system.NativeStart.main(Native Method) 08-31 14:53:11.147: WARN/ActivityManager(2083): Force finishing activity com.didi2204.android.menu2.test/.Menu3Activity 08-31 14:53:11.655: WARN/ActivityManager(2083): Activity pause timeout for HistoryRecord{40dbedb0 com.didi2204.android.menu2.test/.Menu3Activity} Lien vers le commentaire Partager sur d’autres sites More sharing options...
didi2204 Posté(e) 31 août 2011 Auteur Share Posté(e) 31 août 2011 Merci beaucoup !!!!!!!!! Grâce à toi j'ai su voir d'ou venait l'erreur ! Je n'avais en faite pas inscrit l'activity "Parametres" dans le manifest. J'ai essayer et sa marche. Merci, vraiment merci. Sa peut être débile car je n'ai réussi qu'à faire cela mais pour moi j'avance dans le développement android. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lord Yu Posté(e) 31 août 2011 Share Posté(e) 31 août 2011 Je crois qu'on l'a tous fait cette erreur et que ça nous arrive encore ! Heureusement, Logcat est là :P Lien vers le commentaire Partager sur d’autres sites More sharing options...
didi2204 Posté(e) 31 août 2011 Auteur Share Posté(e) 31 août 2011 Oui c'est sur ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.